ADODB.Streamオブジェクトを使って、UTF-8テキストファイルとの間でデータを入出力するコードです。
そのテキストファイル入出力のVBAコードは、
⇒ こちらの記事をご覧ください。
そこでは、入力(インプット)操作、出力(アウトプット)操作、両方のコードを掲載しています。
このうち、アウトプット操作の方は、列(フィールド)が1列だけのデータを、テキストファイルに書き出すコードになっています。
けれども、実社会でやり取りされるデータは、多くの場合、列(フィールド)が複数の、CSVデータです。
CSVは、
Comma Separated Values の略で、
各列(フィールド)の値が、カンマで区切られたデータです。
これも、テキストファイルの一種です。
そこで、Excelデータを、CSVファイルとして出力するコードを書いてみました。
これが実行されたらどのような動きになるのか、想像しながらコードを書く作業なので、頭の体操になりました。ボケ防止にはいいですね。
事前バインディング方式でのコードなので、事前準備として、Library参照設定が必要です。
具体的には、VBE(VBエディタ)の[ツール]‐[参照設定]で、
「Microsoft ActiveX Data Objects 6.1 Library」
の項目に、チェックを付ける作業です。
以下が、Excelデータを、文字コードUTF-8のCSVファイルに出力する、VBAサンプルコードです。
Sub Txt_Output()
'事前バインディング方式
'【参照設定】Microsoft ActiveX Data Objects 6.1 Library
Dim myAdost As ADODB.Stream
Dim i As Long, n As Long
Dim myLine As String, myFile As String
Set myAdost = New ADODB.Stream
myFile = "D:¥goosyun.csv"
i = 1
With myAdost
.Charset = "UTF-8"
.Open
Do While Cells(i, 1).Value <> ""
myLine = ""
n = 1
Do While Cells(i, n + 1).Value <> ""
myLine = myLine & Cells(i, n).Value & ","
n = n + 1
Loop
myLine = myLine & Cells(i, n).Value
.WriteText myLine, adWriteLine
i = i + 1
Loop
.SaveToFile myFile, adSaveCreateOverWrite
.Close
End With
MsgBox "UTF-8のCSVアウトプット完了"
End Sub
このコードを実行すると、Excelのセル上の値が、CSVファイルになって保存されます。UTF-8文字コードを使用して作成されたCSVファイルです。
それでは、また次の記事で
■■■■ goosyun ■■■■
最近の「VBAプログラミング・マクロ」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事