スポンサーサイト

一定期間更新がないため広告を表示しています

at , スポンサードリンク, -

-, -, - -

vba UTF-8Nで出力する方法(bomなし)

だいぶ前に  vba UTF-8で出力する方法 を書いて検索エンジン経由でよく見に来られています。
そこで、もう一つメモ書きをしておきましょう。
UTF-8には、もう一つUTF-8Nと言う形式があります。
UTF-8とUTF-8Nは何が違うんだろう?と思いますね。
この違いは、UTF-8は、BOMコードが先頭に2バイト入っていて、UTF-8Nは入っていないです。

と言うことで、今回は、vbaでUTF-8Nを出力する方法をメモしておきます。
これが一番良い方法か分かりませんが、あくまでサンプルとしておきます。
処理の流れ、いったんバッファにUTF-8で貯め込み、バイナリでバッファを3バイト目から読み込み、
読み込んだ値をそのまま出力する方法です。

出力先 = "C:¥test.html"
Dim ADOobj    Set ADOobj = CreateObject("ADODB.Stream") 'ADOのストリームオブジェクトを用意
    ADOobj.Charset = "UTF-8"                          '出力する文字コード
    ADOobj.Open                                              'オープン
    ADOobj.WriteText "出力したい文字"  & vbLf   '出力する部分
    ADOobj.WriteText "出力したい文字"  & vbLf
' 先頭のBOM取り
    ADOobj.Position = 0
    ADOobj.Type = 1                   'TypeBinary
    ADOobj.Position = 3              '3バイト目
    byte_data = ADOobj.Read
    ADOobj.Close
' UTF-8Nコードのデータを保存
    ADOobj.Open
    ADOobj.Type = 1                   'TypeBinary
    ADOobj.Write byte_data
    ADOobj.SaveToFile 出力先, 2    '1:ファイル有り時上書きしない、2:上書きする
    ADOobj.Close
    Set ADOobj = Nothing                      '解放

at 09:42, tom7650, vba

comments(0), trackbacks(0), - -

vba UTF-8で出力する方法

ツールを作っていて文字コードが結構面倒ですね。
インターネットのxmlファイルって意外とUTF-8が多く、excel VBA でツールを作るとUTF-8の文字コードが厄介になってきます。
いっそのことUTF-8で出力てしまえっと思ったけど、ググって調べると、ADOのストリームファイルで出力すれば良いようですね。
という事で、自分のメモ書きとして、サンプルをアップしておきます。
出力先 = "C:¥test.html"
Dim ADOobj
    Set ADOobj = CreateObject("ADODB.Stream") 'ADOのストリームオブジェクトを用意
    ADOobj.Charset = "UTF-8"                  '出力する文字コード
    ADOobj.Open                               'オープン
    ADOobj.WriteText "出力したい文字"  & vbLf   '出力する部分
    ADOobj.WriteText "出力したい文字"  & vbLf
    ADOobj.SaveToFile 出力先, 2                '1:追加モード、2:上書きモード
    ADOobj.Close    'クローズ
    Set ADOobj = Nothing                      '解放

 vba UTF-8Nで出力する方法(bomなし)

at 21:34, tom7650, vba

comments(0), trackbacks(0), - -