PC・スマホ

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

こんばんは。

nanana-blog管理人のナナナです。

ブログを訪問し記事を読んでいただきありがとうございます。

会社の仕事でCSVファイルをExcelに取込んで処理をする機会は多いのではないでしょうか。

定型業務であれば同じファイル形式のなのでVBAで取込み処理を作成しておくと時間短縮になります。

本日はExcel VBAでCSVファイルを取り込むサンプルを紹介します。

CSVファイルを取り込むサンプルVBA

Excelにボタンを作成して、ボタンを押すと特定のCSVファイルの内容をExcelに取込むVBAプログラムのサンプルです。

CSVファイルデータ
取込みファイル
Sub ボタン1_Click()
Dim intFF As Integer
Dim strData As String
Dim arrData As Variant
Dim IX As Long
Dim checkFile As String
Dim SorceFilePath As String
SorceFilePath = "D:\temp\Dep.csv"
checkFile = Dir(SorceFilePath)
If checkFile = "" Then
MsgBox "指定したファイルが存在しません。"
Exit Sub
End If
intFF = FreeFile
IX = 1
Open SorceFilePath For Input As #intFF
Do While Not EOF(intFF)
Line Input #intFF, strData
strData = Replace(strData, """", "")
arrData = Split(strData, ",")
ThisWorkbook.Worksheets("Sheet2").Cells(IX, 1) = arrData(0)
ThisWorkbook.Worksheets("Sheet2").Cells(IX, 2) = arrData(1)
ThisWorkbook.Worksheets("Sheet2").Cells(IX, 3) = arrData(2)
IX = IX + 1
Loop
Close #intFF
End Sub

VBAの解説

SorceFilePath = "D:\temp\Dep.csv"

変数「SorceFilePath」に取込みたいCSVファイルのパスを格納します。

サンプルではDドライブのtempフォルダにある「Dep.csv」ファイルを取込みます。

checkFile = Dir(SorceFilePath)

Dir関数を使用して取り込みファイルが存在しているかを確認しています。

Dir関数はファイルが存在していると戻り値がファイル名で、存在していないと戻り値が「""(空文字)」になります。

If checkFile = "" Then
MsgBox "指定したファイルが存在しません。"
Exit Sub
End If

Dir関数の戻り値が空文字だった場合は、メッセージを表示させて処理を終了します。

intFF = FreeFile

Openメソッドで使用するファイル番号を取得します。

Open SorceFilePath For Input As #intFF

Openメソッドを使用してDep.csvファイルを開きます。

Inputの部分には他にも以下のような値を入れることができます。

説明
Append追記モード
Binaryバイナリーモード
Input読取りモード
Output上書きモード
Randomランダムアクセスモード
Do While Not EOF(intFF)

取り込みファイルの最終行までDoからLoop間の処理を繰り返し処理します。

Line Input #intFF, strData

取込みファイルのを行単位で関数strDataへ格納します。

 strData = Replace(strData, """", "")

サンプルのCSVはダブルクォーテーション(”)で値を囲んでいるため、Replace関数を使ってダブルクォーテーション削除します。

arrData = Split(strData, ",")

Split関数を使って各項目を配列に格納します。

項目間の区切り文字はカンマ(,)なのでSplit関数の第2引数にカンマを指定します。

ThisWorkbook.Worksheets("Sheet2").Cells(IX, 1) = arrData(0)
ThisWorkbook.Worksheets("Sheet2").Cells(IX, 2) = arrData(1)
ThisWorkbook.Worksheets("Sheet2").Cells(IX, 3) = arrData(2)

Excelに取得した値を追記していきます。

VBAを実行しているブックのシート名「Sheet2」に値を入力していきます。

IXにはセルの行番号が入ります。

サンプルファイルの19行目でIX=1と指定しているので、1行目から順番に値を追記していきます。

IX = IX + 1

次のデータのためにIXの値に1を足します。

Close #intFF

全てのデータを追記し終わったら、ファイルを閉じます。

処理結果は次のようになります。

Excelシート

最後に

いかがだったでしょうか。

本日はExcelのVBAでCSVファイルを取り込む手順を紹介しました。

システムからデータを出力する時、ファイル形式がCSVであることは多いです。

同じCSVを何度も取り込む場合はVBAを作成しておくと時間短縮になるので参考にしてみてください。

www.nanana-blog.com

www.nanana-blog.com

www.nanana-blog.com

www.nanana-blog.com