プロが教える店舗&オフィスのセキュリティ対策術

Sub 別ブックのシートコピー()
Dim SA_MV1 As String
Dim MV2 As String
Worksheets("SA_MV1").Copy After:=Workbooks("Schedule.xls").Sheets(MV2)
End Sub

上記を実行すると、実行時エラー'9'
インデックスが有効範囲にありません。
というエラーが出ます。

何がいけないのでしょうか。どなたかアドバイスいただけますと助かります。
よろしくお願いします。

A 回答 (2件)

>コピー先のブックにSA_MV1という名前のシートを作成した状態で、実行すると



マクロのあるブックと、コピー元・コピー先の関係が理解出来ていないようですね。
きちんと確実に動作させるには、ブック名を正しく指定してプログラミングを行う必要があります。

ブック名を指定せずに Worksheets("Sheet1").~ と書いた場合は、マクロのあるブックのシート名を指定した事になります。
A.xls にマクロが記載されていてそれを実行しても、B.xls のシートを指定した事にはなりません。

Workbooks("B.xls").Worksheets("Sheet4").Copy After:=Workbooks("A.xls").Sheets("Sheet3")
    • good
    • 1

変数を宣言している意味は何でしょう?


Worksheets("SA_MV1") は、"SA_MV1"と言う名前のシート。
Sheets(MV2) は、変数 MV2 に格納されたシート名です。

シート名の設定は合っていますか?(存在していますか?)
    • good
    • 1
この回答へのお礼

書き込みありがとうございます。

その後、コピー先のブックに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はどう記述すればよろしいのでしょうか。

お礼日時:2007/05/24 16:48

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