【VBA】外部ファイルの読み込み
外部ファイルの読み込み
ファイルの存在チェック
カレントディレクトリに読み込み対象のファイル(input.txt)があるかメッセージボックスで表示する
Sub ExistCheck() If Dir(ThisWorkbook.Path & "\input.txt") <> "" Then MsgBox ("ファイルが存在します") Else MsgBox ("ファイルが存在しません") End If End Sub
外部ファイルの読み込みと転記
外部のテキストファイルを1行ずつ読み込んでセルに転記する
Sub ReadText() Dim buf As String Dim i As Long Open ThisWorkbook.Path & "\input.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf ' 読み込んだ内容をメッセージボックスに表示する場合コメントインする ' MsgBox buf i = i + 1 Cells(i, 1) = buf Loop Close #1 End Sub
外部のCSVファイルを読み込んでセルに転記する
- Split で読み込んだ行の "," の位置で分割する
- タブ区切りの場合は vbTab で分割する
Sub ReadCsv() Dim buf As String Dim i As Long ' buf をカンマ区切りで格納するための配列 Dim part Open ThisWorkbook.Path & "\input.csv" For Input As #1 i = 1 Do Until EOF(1) Line Input #1, buf part = Split(buf, ",") Cells(i, 1) = part(0) Cells(i, 2) = part(1) Cells(i, 3) = part(2) i = i + 1 Loop Close #1 End Sub
input.csv の中身
A1,B1,C1
A2,B2,C2
A3,B3,C3
A4,B4,C4
A5,B5,C5
転記結果のイメージ
A | B | C | |
---|---|---|---|
1 | A1 | B1 | C1 |
2 | A2 | B2 | C2 |
3 | A3 | B3 | C3 |
4 | A4 | B4 | C4 |
5 | A5 | B5 | C5 |
外部ファイルの読み込み時チェック
読み込んだ外部ファイルの文字列を行単位でチェックする
- 条件に合致したらメッセージボックスに表示する
- 条件1:文字列 hoge を含む
- 条件2:3文字目から4文字が hoge
Sub ReadTextCheck() Dim buf As String Open ThisWorkbook.Path & "\input.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf If InStr(buf, "hoge") <> 0 Then MsgBox buf End If If Mid(buf, 3, 4) = "hoge" Then MsgBox buf End If Loop Close #1 End Sub
読み込んだ外部ファイルの特定の範囲のみを処理対象にする
- start 行から end 行を表示する
Sub ReadingRange() Dim buf As String Dim i As Long Dim inFlg As Boolean Open ThisWorkbook.Path & "\input.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf If InStr(buf, "start") <> 0 Then InFlg = True MsgBox ("読み込み開始") End If If InFlg = True Then i = i + 1 MsgBox (buf) End If If InStr(buf, "end") <> 0 Then InFlg = False MsgBox ("読み込み終了") End If Loop Close #1 End Sub
input.txt の中身
111
222
333
start
444
555
666
end
777
888
999
実行結果
読み込み開始
start
444
555
666
end
読み込み終了