概要
『dat』や『txt』などの『テキストエディタで中身が確認できるファイル』を1行ずつ処理。
ファイルの文字コードを指定して文字化けしないように。
やり方
'フォーム内に『btn_test』という名前のボタンがある想定のサンプル。
Private Sub btn_test_Click()
'Accessファイルと同じフォルダーに置いてある『tester.txt』を読み込む。
Dim file_path_ As String
file_path_ = CurrentProject.Path & "\tester.txt"
Dim stream_ As New ADODB.Stream
'stream_.Charset = "shift_jis" 'SJISならこう。
stream_.Charset = "utf-8"
stream_.Open
stream_.LoadFromFile file_path_
Do Until stream_.EOS
'adReadLine ≒ 定数 『現在の位置から次の行を読み込むという動作』となる。
Debug.Print stream_.ReadText(adReadLine)
'『adReadAll』を引数で渡すと『現在の位置から最後の行まで全て読み込む動作』になる。
Loop
stream_.Close
End Sub
下記は読み込むファイルをサクラエディタで開いたところ。
サクラエディタ設定が下記なので改行は『キャリッジリターン + ラインフィード』
文字コードとBOM有無については下記。
空行がある場合
前述の実行結果を参照。
問題無く処理できる。
『例外になる』『空行が処理されない』といったことは起きない。
改行
サンプルのVBAコードはそのままで、読み込むファイルの改行コードだけを変えて検証。
キャリッジリターン + ラインフィード
前述の実行結果を参照。
問題無く処理できる。
キャリッジリターン
読み込むファイルが下記。
実行結果は下記。
問題無く処理できる。
ラインフィード
読み込むファイルが下記。
実行結果は下記。
問題無く処理できる。
BOM
サンプルのVBAコードはそのままで、読み込むファイルの改行コードだけを変えて検証。
BOMあり
前述の実行結果を参照。
問題無く処理できる。
BOM無し
読み込むファイルが下記。
(文字コードだけならBOM無し)
実行結果は下記。
問題無く処理できる。
参考サイトさん
バージョン
Windows 10 Pro 22H2 OSビルド 19045.2788
Microsoft Access for Microsoft 365 MSO (バージョン 2302 ビルド 16.0.16130.20298) 32 ビット