1

私はマクロの基本的なユーザーですが、次のジレンマに悩まされています。2 つのブックを開いています。「名前を付けて保存」して、ワークブック 1 のセルのファイル名でワークブック 2 を閉じる必要があります。マクロはワークブック 1 から実行されています。申し訳ありませんが、これはインターネットから取得できる範囲です。最後の行の変更を推測しています。そうそう、Dim の意味もわかりません。

Dim FName As String
Dim FPath As String

FPath = "G:"

FName = Sheets("sheet 1").Range("A1").Text

ThisWorkbook.SaveAs Filename:=FPath & "\" & FName 
4

3 に答える 3

3

FNameDim は、あなたの場合、割り当てた文字列値を参照するコードを伝える (変数を宣言する) 方法です。素敵なチュートリアルについては、このリンクを参照してください

コードを機能させるには、次のことを試してください。

Dim FName As String
Dim FPath As String

FPath = "G:"

FName = ThisWorkbook.Sheets("sheet 1").Range("A1").Text 'use ThisWorkbook since you are running from Workbook1

With Workbooks("Workbook2.xlsx")
    .SaveAs Filename:=FPath & "\" & FName 
    .Close True '-> use false to not save changes
End With
'here you need to tell VBA what specific workbook you want to save
'if you used ThisWorkbook here, you would save the workbook where the code runs from, which is Workbook1

次のようなより良いアプローチを取ることもできます。

Dim FName as String, FPath as String
Dim wkb1 as Workbook, wkb2 as Workbook

Set wkb1 = ThisWorkbook '-> or Set wkb1 = Workbooks("workbook1")

FPath = "G:"
FName = wkb1.Sheets("sheet 1").Range("A1").Text

Set wkb2 = Workbooks("workbook2")
With wkb2
    .SaveAs Filename:=FPath & "\" & FName
    .Close True '-> use false to not save changes
End With
于 2012-09-28T15:46:00.883 に答える
2

他のものには状態があるように、Dim は次元を表します。

歴史的に言えば、さまざまな BASIC (Beginner's All-purpose Symbolic Instruction Code) プログラミング言語では、宣言する必要がある配列を除いて、変数を宣言する必要はありませんでした。そのため、非常に古い BASIC 言語でさえ、「Dim」キーワードを使用して配列を宣言する方法がありました。基本的な言語が少し成長し、通常の変数の宣言をサポートし始めたとき、それらは単に既に使用されているキーワード Dim を借用しました。したがって、Dim は次元を表し、もともとは配列のサイズや境界を示すために使用されていましたが、あらゆる種類の変数を宣言するために引き継がれました。

余談ですが、プログラミング言語が進化するにつれて、その言語設計者は通常、新しいキーワードを導入することに消極的です。それを行うと、既存のプログラムが壊れてしまうことがよくあるからです。たとえば、「var」キーワードを導入した場合、変数名として「var」を使用する多くの既存のプログラムが機能しなくなる可能性があります。言語の進化に伴い、既存のキーワードが多かれ少なかれ機能を追加するために再利用されることは珍しくありません。

于 2012-09-28T20:34:41.730 に答える
1

あなたは正しい軌道に乗っています。最後の先取特権をこれに変更するだけで機能します。

Workbooks("Workbook2Filename.xls").SaveAs Filename:=FPath & "\" & FName 

ただし、次のアプローチをお勧めします。

Dim FName As String
Dim FPath As String

Dim wbBook1 As Workbook
Dim wbBook2 As Workbook

Set wbBook1 = ActiveWorkbook
Set wbBook2 = Workbooks("Workbook2Filename.xls") 'assumed workbook 2 is already open

FPath = "G:"
FName = wbBook1.Sheets("sheet 1").Range("A1").Text

wbBook2.SaveAs Filename:=FPath & "\" & FName

Set wbBook1 = Nothing
Set wbBook2 = Nothing

Dim は Dimension の略で、情報を格納する変数を作成するように VBA に指示する方法です。

于 2012-09-28T15:48:14.410 に答える