メモ VBAでUTF-8を書き出す

2019年07月03日 00時07分

VBA は fileSystemObject が Shift-JIS にしか対応していないので、うごご・・・ってなった。

代わりに ADODB.Stream オブジェクトを使うと文字コードを指定しつつ、読み込みが可能なので、そっちを使うことにした。とは言え、忘れそうなので記録しとく。

<pre class="lang:default decode:true" title="UTF-8等のFileSystemObjectで対応していない形式を書き出す">
'概略        指定されたファイルを読み込む関数※UTF-8等
'関数名      loadIniFiles(iniFileName)
'変数        iniFileName{String}        読み込むiniファイル名
'返り値      無し
Function loadIniFilesByUTF8(iniFileName)
    Dim curPath As String
    Dim retstring As String
    Dim sr      As Object
    Dim strData as String
    curPath = ThisWorkbook.Path & "\" & iniFileName
    'MsgBox ThisWorkbook.Path
    Set sr = CreateObject("ADODB.Stream")
    sr.Mode = 3 '読み取り/書き込みモード
    sr.Type = 2 'テキストデータ
    sr.Charset = "UTF-8" '文字コードを指定
    sr.Open 'Streamオブジェクトを開く
    sr.LoadFromFile (curPath) '指定ファイルの内容を読み込む
    sr.Position = 0 'ポインタを先頭へ
    Do While sr.EOS <> True
        strData = sr.ReadText(-2) 'データ読み込み
        'MsgBox "内容は" & strData
        isTextProperty(strData)
    Loop

    sr.Close 'Streamを閉じる
    Set sr = Nothing 'オブジェクトの解放
    ' Set fs = CreateObject("Scripting.FileSystemObject")
    ' Set a = fs.OpenTextFile(curPath, 1, False, -1)
    ' Do While a.AtEndOfStream <> True
    '     retstring = a.ReadLine
    '     MsgBox retstring
    ' Loop
    ' a.Close
End Function