こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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  
4Book1.xlsbook1sheet ←n=1
5Book2.xlsbook2sheet ←n=2
6Book3.xlsbook3sheet ←n=3
7Book4.xlsbook4sheet
8Book5.xlsbook5sheet
9Book6.xlsbook6sheet ←n=6
10Abc,xlsDefsheet ←n=7

投稿日時 - 2008-01-08 17:54:10

QNo.3661522

困ってます

質問者が選んだベストアンサー

ブック名やシート名は「文字列」だからOpenやSelectやActivate
などするまでに
Sub test01()
s = "Sheet2"
Worksheets(s).Activate
s1 = "A5"
Range(s1).Select
End Sub
のような、上記では、SやS1の文字列を、文字の意味的置いて、本体とサブ番号など別々につくり、多分、&結合子でくっつけて名前を完成させればよい。
これでヒントになるでしょう。
コレクションの特定はオブジェクト名かインデックス番号で指定するか、周囲の状況からDefaltの仕組みで省略できるかです(Activesheetのように)。

投稿日時 - 2008-01-08 22:24:31

補足

OPTION explicit指定の場合、sとかs1の変数の宣言は
どうかくのでしょう。
Dim s  as Worksheets
Dim s  as Worksheet
Dim s  as Caracters
どちらでしょう。
s1はIntegerでいいですよね。

投稿日時 - 2008-01-09 18:15:56

お礼

解決しました。ありがとうございました。
Dim s  as strings ですね

投稿日時 - 2008-01-14 23:27:15

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

("@@@.xls")や("Sheets2")などは変数を使用して(変数ブック)や(変数シート)と書けますので、nに合わせて変数ブックや変数シートに必要な値を入力しましょう。

投稿日時 - 2008-01-08 18:04:25

補足

なお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

投稿日時 - 2008-01-09 18:25:09

お礼

解決しました。ありがとうございました。

投稿日時 - 2008-01-14 23:25:48

あなたにオススメの質問