※ ChatGPTを利用し、要約された質問です(原文:他のブックからシートをコピーする)
他のブックからシートをコピーする方法
このQ&Aのポイント
ExcelVBA勉強中の者です。他のブックのsheet1をコピーし、使用中のブックのsheet1にペーストする方法を教えてください。
他のブックからシートをコピーし、使用中のブックにペーストする方法が分かりません。book2.Sheets("Sheet1").Copy after:=book1.Worksheets("sheet1")としているのですが、新しいシートが作成されてしまいます。
Excelのバージョンは2002です。ペースト先を変数book1のsheet1に指定しているのに、なぜ新しいシートが作成されるのでしょうか?解決方法を教えてください。
ExcelVBA勉強中の者です。
他のブックのsheet1をコピーし、使用中のブックのsheet1にペーストする事を目的に
ネットの情報を参考に以下のコードを作成しました。
Sub test()
Dim book1 As Workbook '変数book1をワークブック型で宣言
Dim book2 As Workbook '変数book2をワークブック型で宣言
Set book1 = Application.ActiveWorkbook 'アクティブになっているブックをbook1へセット
Application.ScreenUpdating = False '画面の更新を止める
'↓アドレスのブックを開く事までbook2にセット(ReadOnly:=Trueで読み込み専用)
Set book2 = Application.Workbooks.Open("C:\Documents and Settings\AAA\デスクトップ\他のブック.xls", ReadOnly:=True)
book2.Sheets("Sheet1").Copy after:=book1.Worksheets("sheet1")
Set book1 = Nothing '変数book1を開放
book2.Close SaveChanges:=False 'book2を閉じる(SaveChanges:=Falseで保存せずに終了)
Application.ScreenUpdating = True '画面の更新を再開する
Set book2 = Nothing '変数book2を開放
End Sub
動作としては上手くいったのですが、
book2.Sheets("Sheet1").Copy after:=book1.Worksheets("sheet1")
の部分でペースト先を変数book1のsheet1と指定しているにも関わらず
sheet1(2)という新しいシートが作成され、そちらへペーストしてしまいます。
思うに「コピーしたシートを挿入する」という動作であると思われますが、
これをペーストするという表記が出来ず困っております。
お手数お掛けしますがどなたかご助力お願い致します。
*Excelのバージョンは2002を使用しております。
お礼
keithin様いつもお早い対応を頂きまして有難う御座います。 上記のコードに置き換えて見たところ理想通りの動作を確認できました。 有難う御座います。 「シートをコピーする」という目的から調べていったのですが、 厳密には「シートの中のセルを全てコピーする」という動作だった訳ですね。 この違いに気付けませんでした。 それを知った上で考えてみるとシートが追加されてしまった事も理解できます。 またお手数をお掛けする事も有るかと思いますが、今後ともよろしくお願いします。