• ベストアンサー

EXCEL VBA 他ブックのシートのコピー方法

今開いているブックに、開いていない他のブックのシートをコピーする記述方法を教えて頂けませんでしょうか。(Office365を利用)  開いているブック :A.xlsx  シート:a  開いていないブック:B.xlsx  シート:b bをaの後ろにコピーする方法を教えてください。aにボタンを置いて、それをクリックしたらという方法でも構いません。 よろしくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

ボタンのマクロに以下のコードを AとBが同じフォルダなら WorkbookPath = ThisWorkbook.Path このままで 違う場合 ThisWorkbook.Path を フォルダ表示して上部のアドレスのところをクリックしてそれで出たものを"で囲って ThisWorkbook.Pathと書き替える。 WorkbookPath = "C:\Users\abcdefg\Documents\Office" などのようになる。 FileName = "B.xlsx" B.xlsxは実際のブック名に BBook.Sheets("Sheet1")のSheet1は実際のシート名に それぞれ変更してください。 Sub ボタン1_Click() Dim BBook As Workbook Dim WorkbookPath As String Dim FileName As String WorkbookPath = ThisWorkbook.Path FileName = "B.xlsx" If Dir(WorkbookPath & "\" & FileName) <> "" Then Workbooks.Open WorkbookPath & "\" & FileName Else MsgBox "ファイルが存在しません。", vbExclamation Exit Sub End If Set BBook = Workbooks(FileName) BBook.Sheets("Sheet1").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) BBook.Close Set BBook = Nothing End Sub

satoshi5050
質問者

お礼

お礼が遅くなって申し訳ありません。 詳細に記述して頂き、本当にありがとうございます。 是非試してみたいと思います。

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.4

No3の補足です。 > フォルダ表示して上部のアドレスのところをクリックしてそれで出たもの クイックアクセスで出るドキュメントなどを表示してこの操作をした場合 ドキュメントはドキュメントとしか表示されないので、左のツリー上のところから表示してください。Windows10での操作ですので違う場合は出ないかもしれません。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

Sub test02() Set ak = ActiveWorkbook Set bk = Workbooks.Open("C:\Users\XX\Documents\YYYYY.xlsm") bk.Worksheets("Sheet1").Copy After:=ak.ActiveSheet bk.Close End Sub "C:\Users\XX\Documents\YYYYY.xlsm"は、質問のB.xlsxにあたるもの。 私の場合、テストに選んだ既存のブックが、マクロ付きだったので、拡張子はxlsmでした。 上記のbk.Worksheets("Sheet1").Copyは、質問の「シート:b」に当たる部分。 私のやった、一例のテストではうまく行ったが。やってみてください。 ActiveWorkbookはこのVBAを作って入れているBook。その中のシートは、質問の「a」シート1つだけでもよいようです。もちろん、コピー後は1つ増える。 BをOpenしないで、やりたいという要望ならば、別質問で聞いてみてください。

satoshi5050
質問者

お礼

お礼が遅くなって申し訳ありません。 本当にありがとうございます。試してみたいと思います。

  • Nobu-W
  • ベストアンサー率39% (724/1831)
回答No.1

関連するQ&A