UTF-8のファイルを読み込む(ADODB.Stream)

概要

指定フォルダ内のファイルを ADODB.Stream で1行ずつ読み込む処理です。ADODB.Streamでは、文字コードと改行コードを指定できるので、UTF-8/LFのファイルを読み込むのに使うことが多いです。
処理自体は後から書くことを想定したものなので、「★必要な処理を書く★」のあたりを変更して使ってください。

コード

Option Explicit

Sub ReadFileWithAdoStream()

    Dim AdoStream As Object
    Dim FD As FileDialog, f As Variant
    Dim wkLine As String
    
    Set AdoStream = CreateObject("ADODB.Stream")
    Set FD = Application.FileDialog(msoFileDialogOpen)
    
    'ファイルダイアログ
    With FD
        'ファイルの複数選択は不可
        .AllowMultiSelect = False
        With .Filters
        ''「ファイルの種類」をクリア
            .Clear
            .Add "●●●●●●", "*.csv"                    '★表示する名前と拡張子を変更
        End With
        If .Show = True Then
            ''選択されたファイルがテキストファイルだったら
            If LCase(Right(.SelectedItems(1), 4)) = ".csv" Then    '★拡張子チェックする場合には適宜変更
                For Each f In .SelectedItems
                    With AdoStream
                        .Charset = "UTF-8"                  '★文字コード指定
                        .LineSeparator = 10                 '★改行コード指定(-1:CRLF、10:LF、CR:13)
                        .Open
                        .LoadFromFile f
                        '1行ずつ読み込み
                        Do Until .EOS
                            wkLine = .ReadText(-2)
                            '★必要な処理を書く★
                            Debug.Print wkLine
                        Loop
                        .Close
                    End With
                Next f
            End If
        End If
    End With
    
    Set AdoStream = Nothing
    Set f = Nothing
    Set FD = Nothing

End Sub

タイトルとURLをコピーしました