ADODB.streamオブジェクトを使って文字列をByte配列に変換するコードのサンプルです。
ExcelVBAでADODB.streamを使う際には、
1. ExcelのMicrosoft Visual Basic エディタのメニューバーから「ツール->参照設定」とたどる。
2. 表示されたダイアログからMicrosoft ActiveX Data Objectsにチェックを入れる。
という手順が必要です。
文字列からByte配列へ
Byte配列から文字列へ
この記事は
ADODB.Streamでファイル読み込み@Excel マクロ・VBA
いろんな文字コードでファイルを読み書きするにはADODB.Stream
ADO Stream Object
ADODB.Streamによる文字コード変換のサンプル(VB6)
VB6: How To Convert UTF-8 Byte Arrays into Unicode Strings (and vice versa)
を参照させて頂きました。
ちなみに
WinHttpを使ったPOSTでとりあげたコードを組み合わせれば、「UTF8エンコーディングでStringをHttp POSTするExcel VBAプログラム」ができます。以下のようになります
ExcelVBAでADODB.streamを使う際には、
1. ExcelのMicrosoft Visual Basic エディタのメニューバーから「ツール->参照設定」とたどる。
2. 表示されたダイアログからMicrosoft ActiveX Data Objectsにチェックを入れる。
という手順が必要です。
文字列からByte配列へ
Private Function ADOS_EncodeStringToByte(ByVal cset As String, ByRef strUni As String) As Byte()
On Error GoTo e
Dim objStm As ADODB.stream: Set objStm = New ADODB.stream
objStm.Mode = adModeReadWrite
objStm.Open
objStm.Type = adTypeText
objStm.Charset = cset
objStm.WriteText strUni
objStm.Position = 0
objStm.Type = adTypeBinary
Select Case UCase(cset)
Case "UNICODE", "UTF-16"
objStm.Position = 2
Case "UTF-8"
objStm.Position = 3
End Select
ADOS_EncodeStringToByte = objStm.Read()
objStm.Close
Set objStm = Nothing
Exit Function
e:
Debug.Print "Error occurred while encoding characters" & Err.Description
If objStm Is Nothing = False Then objStm.Close
Set objStm = Nothing
End Function
Byte配列から文字列へ
Private Function ADOS_EncodeByteToString(ByVal cset As String, ByRef strUni() As Byte) As String
On Error GoTo e
Dim objStm As ADODB.stream: Set objStm = New ADODB.stream
objStm.Mode = adModeReadWrite
objStm.Open
objStm.Type = adTypeBinary
objStm.Write strUni
objStm.Flush
objStm.Position = 0
objStm.Type = adTypeText
objStm.Charset = cset
ADOS_EncodeByteToString = objStm.ReadText
objStm.Close
Set objStm = Nothing
Exit Function
e:
Debug.Print "Error occured while encoding characters" & Err.Description
If objStm Is Nothing = False Then objStm.Close
Set objStm = Nothing
End Function
この記事は
ADODB.Streamでファイル読み込み@Excel マクロ・VBA
いろんな文字コードでファイルを読み書きするにはADODB.Stream
ADO Stream Object
ADODB.Streamによる文字コード変換のサンプル(VB6)
VB6: How To Convert UTF-8 Byte Arrays into Unicode Strings (and vice versa)
を参照させて頂きました。
ちなみに
WinHttpを使ったPOSTでとりあげたコードを組み合わせれば、「UTF8エンコーディングでStringをHttp POSTするExcel VBAプログラム」ができます。以下のようになります
Private Function httpPostServletUTF8(url As String, data As String) As String
On Error GoTo e
Dim request() As Byte: request = ADOS_EncodeStringToByte("utf-8", data)
Dim response() As Byte: response = httpPostServletByte(url, request)
httpPostServletUTF8 = ADOS_EncodeByteToString("utf-8", response)
Exit Function
e:
Debug.Print "HttpPostServletUTF8 Error:" & Err.Description
End Function
コメント