エクセル→テキストファイル書き出し 

エクセルの内容をテキストファイルに書き出す

文字コードを指定できる。
UTF-8の場合、BOMなしで作成する。
ファイル名は定数「FILE_PATH」にフルパスを指定する。
WriteText の第二引数は改行するかしないか。1はする、0はしない。

'エクセル→テキストファイル書き出し
Sub writeFromExcelToText()

    Const FILE_PATH = "ここにファイルのフルパスを指定する"
    Const CHAR_SET = "UTF-8" 'UTF-8 / SHIFT-JIS
    
    Dim ws As Worksheet
    Set ws = ActiveSheet

    With CreateObject("ADODB.Stream")
        .charSet = CHAR_SET
        'https://learn.microsoft.com/ja-jp/sql/ado/reference/ado-api/lineseparatorsenum?view=sql-server-ver16
        .LineSeparator = 10
        .Open
        'ファイル書き出し
        For i = 1 To 20
            .WriteText ws.Cells(i, 1), 1
        Next
        '最後の1行は改行なし
        .WriteText ws.Cells(i, 1), 0
        
        If CHAR_SET = "UTF-8" Then
            'Streamオブジェクトの先頭からの位置を指定する。Typeに値を設定するときは0である必要がある
            .Position = 0
            '扱うデータ種類をバイナリデータに変更する
            .Type = 1
            '読み取り開始位置?を3バイト目に移動する(3バイトはBOM付き部分を削除するため)
            .Position = 3
            'バイト文字を一時保存
            bytetmp = .read
            'ここでは保存は不要。一度閉じて書き込んだ内容をリセットする目的がある
            .Close
            '再度開いて
            .Open
            'バイト形式で書き込む
            .write bytetmp
        End If
        '保存
        .SaveToFile FILE_PATH, 2
        'コピー先ファイルを閉じる
        .Close
    End With
End Sub


コメント