EXCEL VBA 別のブックからデータをコピーする(ブック間のシートコピー)(テクニック)
EXCEL VBA 別のブックからデータをコピーする(ブック間のシートコピー)(テクニック)
EXCELブックで別々にデータを管理している時に、個々に同じデータをブックに持つよりも、マスターデータのブックとして、必要に応じてデータを参照または、データをコピーする方が、データが管理しやすくなります。ここで説明するのは、別のブックからデータをコピーする2通りのプログラム説明をいたします。それでは、順番に説明いたします。
●【EXCEL VBA 別のブックからエクセルブックを開かないでデータ取得する(ブック間のシートコピー)、下記の参照して下さい】
EXCEL VBA エクセルブックを開かないでデータを取得(ExecuteExcel4Macro)・別ブックからデータ取得・別ブックからのデータコピー
EXCEL VBA 他のブックからデータを取得する。(指定したファイル)
下記のサンプルプログラムは、他のブックから必要なデータを取得し選択したデータを習得するサンプルプログラムです。今回、説明するサンプルは、下記、図の通りに、メインブックからマスターブックにアクセスを行い、マスターブックからメインブックに必要なデータを取得(コピー)を行うサンプルプログラムです。複数のプログラムで共通データを取り扱う時に、便利だと思います。
下記のサンプルプログラムを実行する際は、下記の通りにブック名(ファイル名)・シート名を設定して下さい。
※ ファイル名「main」シート名「項目」
※ ファイル名「Master」シート名「項目M」
※ 「Master.xlsx」の保存先は、C:\DATAへ保存する。
★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
別ブック転記
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
'******** AKIRA55.COM ******* https://akira55.com/other_books ' Sub マスターデータ取込01() '指定したファイルを取り込み、別のファイルに貼り付ける。 Dim SetFile As String Dim wbMoto, wbSaki As Workbook Set wbMoto = ActiveWorkbook 'マスターデータ取り込み元をブック名をセット(取り込み元) Application.DisplayAlerts = False SetFile = "C:\DATA\Master.xlsx" 'マスターデータファイルの取り込み場所をセット(取り込み先) Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0 'マスターデータファイルを読み取り専用で開きます() Set wbSaki = Workbooks.Open(SetFile) '開いたマスターブック名とセット(取り込み先) wbSaki.Worksheets("項目M").Range("A1:B20").Copy '取り込み先のシート名の「項目M」セルA1:B20の範囲をコピー wbMoto.Worksheets("項目").Range("A1").PasteSpecial xlPasteFormulasAndNumberFormats '取り込み元 シート名「項目」A1から貼り付け Application.CutCopyMode = False 'コピー切り取りを解除 wbSaki.Close False 'マスターデータ取り込み先のファイルを閉じる Application.DisplayAlerts = True End Sub ' ' |
他のブックからデータを取得する・複数シートからデータ取得(ファイルを選択する)
下記のサンプルプログラムは、上記のサンプルプログラム①の応用になります。今回のサンプルプログラムは、他のブックから取得する場合に、ダイアログボックスにより、ファイルが自由に選択する事が出来ます。複数のマスターブックからデータを取得する場合に利用できます。それでは、順番に説明いたします。
下記のサンプルプログラムを実行する際は、下記の通りにブック名(ファイル名)・シート名を設定して下さい。
※ ファイル名「main」シート名「項目」・「顧客データ」
※ ファイル名:「MasterXX」シート名「項目M」 ・「顧客データ」
ファイル名については、上記のファイル名では無くでも動作しますが、シート名は指定です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
'******** AKIRA55.COM ******* https://akira55.com/other_books ' Sub マスターデータ取込02() '選択したファイルを取り込み、別のファイルに貼り付ける。 Dim RC As Integer Dim OpenFileName, fileName, Path, SetFile As String Dim wbMoto, wbSaki As Workbook Set wbMoto = ActiveWorkbook 'マスターデータ取り込み元をセット Application.DisplayAlerts = False RC = MsgBox("マスターデータ取込みますか?", vbYesNo + vbQuestion, "確認") If RC = vbYes Then OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") 'ダイアログボックスを表示して、マスターデータファイルを指定します。 If OpenFileName <> "False" Then SetFile = OpenFileName Else MsgBox "キャンセルされました" Exit Sub 'マスターデータの取り込みをキャンセル End If Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0 'ダイアログボックスで指定したマスターデータファイルを開きます。 Set wbSaki = Workbooks.Open(Path & SetFile) 'ワークブック間のシート「項目」をコピーします。 wbSaki.Worksheets("項目M").Range("A1:B20").Copy wbMoto.Worksheets("項目").Range("A1").PasteSpecial xlPasteFormulasAndNumberFormats 'ワークブック間のシート「顧客データ」をコピーします。 wbSaki.Worksheets("顧客データM").Range("A1:G20").Copy wbMoto.Worksheets("顧客データ").Range("A1").PasteSpecial xlPasteFormulasAndNumberFormats Application.CutCopyMode = False 'コピー切り取りを解除 wbSaki.Close False 'マスターデータ取り込み先のファイルを閉じる Else MsgBox "処理を中断します" End If Application.DisplayAlerts = True End Sub ' ' |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。