Think Twice
IT技術メモ | VBAのメモ
Created: 2020-11-29 / Updated: 2020-11-29

VBAでFile I/O


こちらはVBAでFile I/Oを行う方法のメモです。
なお、サンプル上ではオブジェクト階層をフルで書いていますが、
省略すると訳が分からなくなるのでサンプルではあえてそうしています。
慣れてきたら適宜省略して下さい。

目次


ADODB.Streamを利用してファイルの読み込みを行う

読み込みサンプル1
Copy
Public Sub FileIORead1()
    ' [参照設定] Microsoft ActiveX Data Objects 6.1 Library
    Dim p_adodbStream As ADODB.Stream
    Set p_adodbStream = New ADODB.Stream
    
    p_adodbStream.Open
    p_adodbStream.Type = ADODB.StreamTypeEnum.adTypeText
    p_adodbStream.Charset = "Shift_JIS"
    p_adodbStream.LoadFromFile "C:\temp\in.txt"
    
    Dim p_line As String
    Do Until p_adodbStream.EOS
        p_line = p_adodbStream.ReadText(ADODB.StreamReadEnum.adReadLine)
        Debug.Print "[" & p_line & "]"
    Loop
    
    p_adodbStream.Close
End Sub
in.txt
Copy
abc
1234
あいうえお
出力結果
Copy
[abc]
[1234]
[あいうえお]

ADODB.Streamを利用してファイルの書き込みを行う

書き込みサンプル1
Copy
Public Sub FileIOWrite1()
    ' [参照設定] Microsoft ActiveX Data Objects 6.1 Library
    Dim p_adodbStream As ADODB.Stream
    Set p_adodbStream = New ADODB.Stream
    
    p_adodbStream.Open
    p_adodbStream.Type = ADODB.StreamTypeEnum.adTypeText
    p_adodbStream.Charset = "Shift_JIS"
    
    p_adodbStream.WriteText "abc", ADODB.StreamWriteEnum.adWriteLine
    p_adodbStream.WriteText "1234", ADODB.StreamWriteEnum.adWriteLine
    p_adodbStream.WriteText "あいうえお", ADODB.StreamWriteEnum.adWriteLine
   
    p_adodbStream.SaveToFile "C:\temp\out.txt", ADODB.SaveOptionsEnum.adSaveCreateOverWrite
    p_adodbStream.Close
End Sub
out.txt
Copy
abc
1234
あいうえお

参考