Excel

Excel VBAでファイル取込み!Excelファイル編

前回CSVファイルの取込み方法について紹介しました。

CSVファイルと同様に、Excelファイルで別Excel ファイルの取込みをすることがあります。

Excelファイルの取り込みはCSVとは違い、Excelオブジェクトを作成したりしないといけないため多少複雑ですが、一度覚えてしまえばそこまで難しくはありません。

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文を書くことで取込むデータを選択することもできます。

サンプルをコピーして色々試してみてください。

www.nanana-blog.com

www.nanana-blog.com

www.nanana-blog.com