VBAでブック間のコピー

Excel VBAで他のブックからデータをコピーするやり方を説明します。

 

今回はUSBメモリ(私のPCではDドライブ)に下記の3つのファイルが保存してあります。

  1. 中村店8月売上
  2. 名古屋北店売上
  3. 8月売上集計

1と2のファイルからデータを読み込み3番のファイルにコピーします。
VBAのプログラムは3番目のファイルで作成します。

それぞれのファイルのデータは以下のようになっています。

 

中村店8月売上

名古屋北店8月売上

8月売上集計

8月売上集計のExcelファイルを開き

下記のコードを入力します。


 

Sub 集計()

 

    Dim wb As Workbook

    Dim sh As Worksheet

    Dim lastRowNo As Long

    

    '1店舗目のデータのコピー

    Set wb = Workbooks.Open("D:\中村店8月売上.xlsx")

    

    Set sh = wb.Sheets(1)

    

    lastRowNo = sh.Cells(Rows.Count, "A").End(xlUp).Row

 

    Range(Cells(2, "A"), Cells(lastRowNo, "F")).Copy

    

    wb.Close

    

    lastRowNo = Cells(Rows.Count, "A").End(xlUp).Row

    Cells(lastRowNo + 1, "A").PasteSpecial

   

    '2店舗目のデータコピー

    Set wb = Workbooks.Open("D:\名古屋北店8月売上.xlsx")

    

    Set sh = wb.Sheets(1)

    

    lastRowNo = sh.Cells(Rows.Count, "A").End(xlUp).Row

 

    Range(Cells(2, "A"), Cells(lastRowNo, "F")).Copy

        

    wb.Close

    

    lastRowNo = Cells(Rows.Count, "A").End(xlUp).Row

    Cells(lastRowNo + 1, "A").PasteSpecial

    

End Sub

 


このプログラムを実行する時に他の2つのファイル(中村店と名古屋北店のファイル)は閉じておいてください。
そうしないとエラーになります。

 

 

変数の定義

 

  Dim wb As Workbook        'wbはワークブックオブジェクト(プログラムの中でExcelを開くために使用)

    Dim sh As Worksheet       'wsはワークシートオブジェクト

    Dim lastRowNo As Long     'データの最終行を格納

 

1店舗目のデータのコピー、張り付け

    Set wb = Workbooks.Open("D:\中村店8月売上.xlsx")  

  '1つ目のブックを開き(Open)ます。

    'ファイルのパスは、保存先に合わせて変更してください。

 

    Set sh = wb.Sheets(1)               

  '開いたブックの1つ目のシート

    

    lastRowNo = sh.Cells(Rows.Count, "A").End(xlUp).Row 

  '開いたブックの最終行を取得

 

    Range(Cells(2, "A"), Cells(lastRowNo, "F")).Copy   

  '開いたブックの2行目から最終行までコピー

    

    wb.Close                      

  '開いたブックを閉じます。必ず!

    

 

    '以下、8月売上集計ブックでの処理

    lastRowNo = Cells(Rows.Count, "A").End(xlUp).Row  

    '8月売上集計の最終行 

 

    Cells(lastRowNo + 1, "A").PasteSpecial       

    '最終行の1行したに張り付け(PasteSpecial)

2店舗目の処理は1店舗目の処理と同じです。

8月売上集計の最終行にデータをコピーしています。

 

 

オブジェクトの設定

Workbook、Worksheetオブジェクトを設定する場合は必ず

 

Set wb =

 

と書きます。最初に「Set」と書いてあることに注意してください。