
初心者です。検索してもわからなかったので質問です。
下記のようなマクロの処理で「AAA」というファイル名のExcelに「2.xls」からデータをコピーし貼り付けています。
・
・
Windows("AAA.xls").Activate
Rows("4:4").Select
Selection.Insert Shift:=xlDown
Windows("2.xls").Activate
Range("C6").Select
Selection.Copy
Windows("AAA.xls").Activate
Range("A4").Select
ActiveSheet.Paste
Windows("2.xls").Activate
Range("C7").Select
Application.CutCopyMode = False
Selection.Copy
・
・
今回は「2.xls」ではなく「3.xls」、「4.xls」、・・・といったように違うファイル名で同じ処理を行ないたいので「2」と指定するのではなく「(ファイル名).xls」といった形にしたいのですが、それは可能なのでしょうか。
ご意見宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
仮に AAA.xls の Sheet1!A1 にファイル名(2や3等)が入力されているとします。
それをファイル名とするマクロは以下のようになります。なおWorksheetは明示するようにしましょう。そうしないとたまたまマクロ実行時に開いていたシートに対して処理をしてしまいます。また余分なSelectは省いた方が動作が速くなります。
●サンプル●
Windows("AAA.xls").Activate
fName = Worksheets("Sheet1").Range("A1").Value & ".xls" 'A1の値を変数fNameに格納
Worksheets("Sheet1").Rows("4:4").Insert Shift:=xlDown
Windows(fName).Activate '変数fNameを使ってActivateする
Worksheets("SheetA").Range("C6").Copy 'SheetAはコピー元のシート名
Windows("AAA.xls").Activate
Range("A4").Select
Activesheet.Paste
なおCopy時に貼り付け先を指定する方法もあります。
Windows("AAA.xls").Activate
Worksheets("Sheet1").Range("A1").Copy _
Destination:=Workbooks("Book2.xls").Worksheets("Sheet3").Range("A1")
また、値だけコピーすれば良いなら代入を用いる方法もあります。
Windows("AAA.xls").Activate
Workbooks("Book2.xls").Worksheets("Sheet3").Range("A2").Value _
= Worksheets("Sheet2").Range("A1")
No.4
- 回答日時:
こんばんは。
参考意見ですが・・・
2つのブック間であればVBAを動かしたいファイル名はすでに既知であるでしょうし、他のブックはファイル名がわかっていなくても
たとえばシート1を指定したい場合
worksheets(1)という記述をWindowに使えば、window(1)という記述が使えるので単純な場合楽に使えます。
No.3
- 回答日時:
こんばんは。
何を、どのようにしているのか良く分かりませんが、予め開いておいたブックを、ループをして処理したいという意味なのでしょうかしらね。
例えば、このようにしたらどうでしょうか?
Dim wbName As Variant
Dim WorkbookNames As Variant
WorkbookNames = Array("1.xls", "2.xls", "3.xls","4.xls")
For Each wbName In WorkbookNames
With Workbooks(wbName)
.Activate
'処理
End With
Next wbName
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelでハイパーリンク 別ブッ...
-
ExcelVBAで今開いているユーザ...
-
【Excel VBA】ブックを複数開い...
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
【ExcelVBA】指定の書式で、マ...
-
エクセルVBA Workbook変数に変...
-
フォルダ内の全ブックのシート...
-
エクセルVBAでブックを開くと処...
-
VB2010でExcelの行をコピーして...
-
VBA、Excelのworkbook.open に...
-
VBAを一度起動するとずっと出て...
-
複数のデータ系列の線の太さを...
-
エクセル終了時の保存確認メッ...
-
エクセルでツールバーに「縮小...
-
【マクロ】excelファイルを開く...
-
昨日まで動いていたエクセルの...
-
Excelマクロ ファイル名が変わ...
-
別のパソコンでエクセルのマク...
-
VBA[Private Sub]のコードをシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
-
エクセルVBA Workbook変数に変...
-
VB2010でExcelの行をコピーして...
-
【ExcelVBA】指定の書式で、マ...
-
【Excel VBA】ブックを複数開い...
-
フォルダ内の全ブックのシート...
-
VBAでEXCELのワークシートを削...
-
EXCELマクロでxlsとxlsxを開く方法
-
すでに開いているブックのマク...
-
フォルダ内の全てのBookに同じ...
-
他のBookのユーザー定義関数を使う
-
EXCEL VBA起動時の処理
-
excelマクロ、任意セルの値で名...
-
excelでハイパーリンク 別ブッ...
-
エクセルのブックを保存すると...
-
エクセルマクロで、他ブックの...
-
同じ名前で拡張子が違うファイル
-
エクセルのマクロでこんな風に...
-
エクセル マクロ WEBエクセル...
おすすめ情報