- ベストアンサー
excel vba
テーブル情報に基づきシートをコピーするVBAマクロを記述したい。 ExcelのBook111のSheet1に次のような データが入っています。 (1、2)セルにn=3という数字が入っているものとします。 その数値に合わせて、この場合は3なので Sub Sample01() Workbooks("Book3.xls").Worksheets("booksheet3").Copy After:=Workbooks("Book111.xls").Sheet(1) End Sub のようなつまり、booksheet3なるシートをBook111(固定なBOOK)にコピーしようとしています。 このようなことをVBAで書くにはどうすればいいのでしょうか。 ただしBook名とシート名はあくまでデータの値にもとづいたデータをもってくることになります。 要するに間接参照したデータに基づき処理するのをどのように記述するかという質問です。 A列 B列 1 回数 n=3 2 3 4 Book1.xls book1sheet ←n=1 5 Book2.xls book2sheet ←n=2 6 Book3.xls book3sheet ←n=3 7 Book4.xls book4sheet 8 Book5.xls book5sheet 9 Book6.xls book6sheet ←n=6 10 Abc,xls Defsheet ←n=7
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ブック名やシート名は「文字列」だからOpenやSelectやActivate などするまでに Sub test01() s = "Sheet2" Worksheets(s).Activate s1 = "A5" Range(s1).Select End Sub のような、上記では、SやS1の文字列を、文字の意味的置いて、本体とサブ番号など別々につくり、多分、&結合子でくっつけて名前を完成させればよい。 これでヒントになるでしょう。 コレクションの特定はオブジェクト名かインデックス番号で指定するか、周囲の状況からDefaltの仕組みで省略できるかです(Activesheetのように)。
その他の回答 (1)
- pbforce
- ベストアンサー率22% (379/1719)
("@@@.xls")や("Sheets2")などは変数を使用して(変数ブック)や(変数シート)と書けますので、nに合わせて変数ブックや変数シートに必要な値を入力しましょう。
お礼
解決しました。ありがとうございました。
補足
なおVBA マクロが作った後、実際に動作させる場面で、ExcelのBook111というのは開いているとして、他のBOOKは開いておく必要があるのでしょうか。 ないのでしょうか。 もし開いておく必要がないとしたらマクロは,処理対象のBook3がどのフォルダに入っているいるかどうしてわkるのでしょうか。 この辺初心者などでどうかよろしくお願いします。 Book1.xls book1sheet ←n=1 Book2.xls book2sheet ←n=2 Book3.xls book3sheet ←n=3 Book4.xls book4sheet Book5.xls book5sheet Book6.xls book6sheet ←n=6 Abc,xls Defsheet ←n=7
お礼
解決しました。ありがとうございました。 Dim s as strings ですね
補足
OPTION explicit指定の場合、sとかs1の変数の宣言は どうかくのでしょう。 Dim s as Worksheets Dim s as Worksheet Dim s as Caracters どちらでしょう。 s1はIntegerでいいですよね。