Excel VBAでファイル取込み!Excelファイル編
前回CSVファイルの取込み方法について紹介しました。
CSVファイルと同様に、Excelファイルで別Excel ファイルの取込みをすることがあります。
Excelファイルの取り込みはCSVとは違い、Excelオブジェクトを作成したりしないといけないため多少複雑ですが、一度覚えてしまえばそこまで難しくはありません。
Excel取込みのサンプル
Sub ボタン1_Click() Dim objBook As Excel.Application Dim objSheet As Excel.Worksheet Dim IX As Integer Set objSheet = ThisWorkbook.Worksheets("Sheet2") objSheet.Cells.Clear Set objBook = CreateObject("Excel.Application") objBook.Visible = False objBook.Application.Workbooks.Open Filename:="D:\temp\Book1.xlsx" IX = 1 Do While objBook.Cells(1, IX) <> "" objSheet.Cells(IX, 1) = objBook.Cells(IX, 1) objSheet.Cells(IX, 2) = objBook.Cells(IX, 2) objSheet.Cells(IX, 3) = objBook.Cells(IX, 3) objSheet.Cells(IX, 4) = objBook.Cells(IX, 4) objSheet.Cells(IX, 5) = objBook.Cells(IX, 5) IX = IX + 1 Loop objBook.QuitIX + 1 End Sub
サンプルの解説
Set objSheet = ThisWorkbook.Worksheets("Sheet2")
出力先のシートを変数に格納します。
今回はシート名「Sheet2」に取込んだ内容を出力します。
objSheet.Cells.Clear
Sheet2に前回取込んだデータが残っている可能性があるので、取込む前にシート全体を
クリアします。
Set objBook = CreateObject("Excel.Application")
Excelオブジェクトを作成して変数に格納します。
objBook.Visible = False
作成したExcelオブジェクトを非表示にします。
False ⇒ Trueにすると作成したExcelが画面に表示されます。
objBook.Application.Workbooks.Open Filename:="D:\temp\Book1.xlsx"
作成したExcelオブジェクトでExcelファイルを開きます。
今回はDドライブのtempフォルダにある「Book1.xlsx」ファイルを開きます。
Do While objBook.Cells(1, IX) <> ""
Do ~ Loopまでが繰り返し処理です。
Book1.xlsxファイルのA列のセルが未入力になるまで繰り返し処理をします。
objSheet.Cells(IX, 1) = objBook.Cells(IX, 1) objSheet.Cells(IX, 2) = objBook.Cells(IX, 2) objSheet.Cells(IX, 3) = objBook.Cells(IX, 3) objSheet.Cells(IX, 4) = objBook.Cells(IX, 4) objSheet.Cells(IX, 5) = objBook.Cells(IX, 5)
繰り返し処理の内容です。
VBAを実行しているExcelブックのSheet2にBook1.xlsxファイルの内容を記述していきます。
繰り返し処理の前に変数IXに「1」を格納しているので、繰り返し処理の最初はSheet2のセル1行目にBook1.xlsxの1行目の内容を記述していきます。
IX = IX + 1
変数IXをカウントアップします。
この処理をすることで次の行を参照することができます。
objBook.Quit
書き込み処理が終了したので、Book1.xlsxファイルを閉じます。
この処理をしないとExcelファイルがずっと開いている状態になり、手動で開いた時に読取り専用でしか開けなくなってしまいます。
最後に
いかがだったでしょうか。
本日はExcelファイルで別Excelを開いて内容を転記するVBAを紹介しました。
今回は単純に転記するVBAでしたが、繰り返し処理にIf文を書くことで取込むデータを選択することもできます。
サンプルをコピーして色々試してみてください。