アプリ版:「スタンプのみでお礼する」機能のリリースについて

初心者です。検索してもわからなかったので質問です。
下記のようなマクロの処理で「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」といった形にしたいのですが、それは可能なのでしょうか。
ご意見宜しくお願いいたします。

A 回答 (4件)

仮に 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")
    • good
    • 1

こんばんは。


参考意見ですが・・・
2つのブック間であればVBAを動かしたいファイル名はすでに既知であるでしょうし、他のブックはファイル名がわかっていなくても
たとえばシート1を指定したい場合
worksheets(1)という記述をWindowに使えば、window(1)という記述が使えるので単純な場合楽に使えます。
    • good
    • 1

こんばんは。



何を、どのようにしているのか良く分かりませんが、予め開いておいたブックを、ループをして処理したいという意味なのでしょうかしらね。

例えば、このようにしたらどうでしょうか?

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
    • good
    • 2

変数を使用すればよいです。


あらかじめ、変数FlNameに拡張子を除いたファイル名を格納し、
Windows(FlName & ".xls").Activate
のように、& でつなげればOK。

また、ファイル名を指定せずに、オブジェクト変数を定義し、開いているブックを参照する方法も考えられます。

この回答への補足

ごめんなさい。。
「変数FlNameに拡張子を除いたファイル名を格納し」
ってところが分かりませんでした。

補足日時:2007/08/30 18:10
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!