【エクセルVBAレシピ】一番左のシートへ、外部のエクセルファイルの一番左のシートのすべてのセルをコピーする。
Sub copyCellsFromExternalFirstSheet() Dim fileFilter As String fileFilter = "Excel ファイル (*.xlsx;*.xlsm;*.xls;*.xlm),*.xlsx;*.xlsm;*.xls;*xlm" Dim filePath As Variant filePath = Application.GetOpenFilename(fileFilter) If filePath = False Then Exit Sub Dim destinationWB As Workbook: Set destinationWB = Application.ActiveWorkbook Dim sourceWB As Workbook: Set sourceWB = Workbooks.Open(CStr(filePath)) sourceWB.Sheets(1).Activate sourceWB.Sheets(1).Cells.Copy destinationWB.Sheets(1).Activate destinationWB.Sheets(1).Cells.Select destinationWB.Sheets(1).Paste Application.CutCopyMode = False sourceWB.Close (False) End Sub
用途としては
定期的に同じ書式の新しいデータが送られてくる。
データを使いやすくする為、関数を組み込んだファイルを使いたい。
シートをそのままコピーすると組んだ関数の参照がズレる。
シートのコピーではなくシート内のセルのコピペで出来るが手間がかかる。
作業手順の簡略化で他人への操作説明も簡略。
参照:
Application.GetOpenFilename メソッド (Excel) | Microsoft Docs
Workbooks.Open メソッド (Excel) | Microsoft Docs