パソコン悪戦苦闘記録

Excelデータを文字コードUTF-8のCSVファイルに出力するVBA

 昨日(2022年9月23日)は、自分自身の備忘のため、あるExcelマクロのVBAコードを、ブログページに掲載しました。
 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
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事