LoginSignup
1
0

More than 1 year has passed since last update.

AccessのVBAでファイルを1行ずつ読み込み(Stream使用)

Last updated at Posted at 2023-04-01

概要

『dat』や『txt』などの『テキストエディタで中身が確認できるファイル』を1行ずつ処理。
ファイルの文字コードを指定して文字化けしないように。

やり方

下記の参照設定を追加。
image.png

サンプルコード
'フォーム内に『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

下記は読み込むファイルをサクラエディタで開いたところ。
image.png
サクラエディタ設定が下記なので改行は『キャリッジリターン + ラインフィード』
image.png
文字コードとBOM有無については下記。
image.png

実行結果は下記。
image.png

空行がある場合

前述の実行結果を参照。
問題無く処理できる。
『例外になる』『空行が処理されない』といったことは起きない。

改行

サンプルのVBAコードはそのままで、読み込むファイルの改行コードだけを変えて検証。

キャリッジリターン + ラインフィード

前述の実行結果を参照。
問題無く処理できる。

キャリッジリターン

読み込むファイルが下記。
image.png
image.png
実行結果は下記。
image.png
問題無く処理できる。

ラインフィード

読み込むファイルが下記。
image.png
image.png
実行結果は下記。
image.png
問題無く処理できる。

BOM

サンプルのVBAコードはそのままで、読み込むファイルの改行コードだけを変えて検証。

BOMあり

前述の実行結果を参照。
問題無く処理できる。

BOM無し

読み込むファイルが下記。
(文字コードだけならBOM無し)
image.png
実行結果は下記。
image.png
問題無く処理できる。

参考サイトさん

バージョン

Windows 10 Pro 22H2 OSビルド 19045.2788
Microsoft Access for Microsoft 365 MSO (バージョン 2302 ビルド 16.0.16130.20298) 32 ビット

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0