#578 UTF-8形式でテキストファイルに出力するには? VBA

通常のVBAによるテキストファイルへのデータ出力(Print命令など)では、キャラクタコードを指定するパラメータなどはなく、Shift-JIS形式になります。一方、ADOの「Streamオブジェクト」を利用すると、UTF-8形式でテキストファイルにデータを出力することができます。

次の例では、データベース内にある「仕入先」テーブルの全レコードのデータをカンマ区切りの形式で組み立てたあと、Streamオブジェクトの各プロパティやメソッドを利用して、仕入先.csvというファイル名のUTF-8形式のテキストファイルとして保存しています。

Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strm As New ADODB.Stream
Dim strData As String

Set cnn = CurrentProject.Connection

'テーブルのデータをstrDataに組み立て
With rst
  .Open "仕入先", cnn, adOpenForwardOnly, adLockReadOnly, adCmdTable
  Do Until .EOF
    strData = strData & !ID & "," & !会社名 & "," & !姓 & "," & !名 & "," & _
                        !部署 & "," & !会社電話番号 & "," & !備考 & vbCrLf
    .MoveNext
  Loop
  .Close: Set rst = Nothing
End With
cnn.Close: Set cnn = Nothing

'組み立てたデータをテキストファイルに出力
With strm
  'キャラクタコードを設定
  .Charset = "UTF-8"
  'Streamオブジェクトを開く
  .Open
  '変数strDataの内容をStreamオブジェクトに書き込み
  .WriteText strData
  'Streamオブジェクトの内容をテキストファイルに保存(既存ファイルは上書き)
  .SaveToFile "C:\DATA\仕入先.csv", adSaveCreateOverWrite
  .Close: Set strm = Nothing
End With

| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved