- ベストアンサー
VBA 別ブックにワークシートをコピーする
Sub 別ブックのシートコピー() Dim SA_MV1 As String Dim MV2 As String Worksheets("SA_MV1").Copy After:=Workbooks("Schedule.xls").Sheets(MV2) End Sub 上記を実行すると、実行時エラー'9' インデックスが有効範囲にありません。 というエラーが出ます。 何がいけないのでしょうか。どなたかアドバイスいただけますと助かります。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>コピー先のブックにSA_MV1という名前のシートを作成した状態で、実行すると マクロのあるブックと、コピー元・コピー先の関係が理解出来ていないようですね。 きちんと確実に動作させるには、ブック名を正しく指定してプログラミングを行う必要があります。 ブック名を指定せずに Worksheets("Sheet1").~ と書いた場合は、マクロのあるブックのシート名を指定した事になります。 A.xls にマクロが記載されていてそれを実行しても、B.xls のシートを指定した事にはなりません。 Workbooks("B.xls").Worksheets("Sheet4").Copy After:=Workbooks("A.xls").Sheets("Sheet3")
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
回答No.1
変数を宣言している意味は何でしょう? Worksheets("SA_MV1") は、"SA_MV1"と言う名前のシート。 Sheets(MV2) は、変数 MV2 に格納されたシート名です。 シート名の設定は合っていますか?(存在していますか?)
お礼
書き込みありがとうございます。 その後、コピー先のブックにSA_MV1という名前のシートを作成した状態で、実行すると、SA_MV1(2)という名前で新しいシートができました。 私の目的は、A.xlsとB.xlsという2つのブックを統合することなのですが・・・、 A.xlsには、sheet1,sheet2,sheet3があり、このsheet3の後ろに、B.xlsのB_sheet4を統合したいのですが・・・。 結果的に、A.xlsには、sheet1,sheet2,sheet3,B_sheet4という4つのシートができる、といったVBAはどう記述すればよろしいのでしょうか。