VBAの中からDBにSQLを発行する際にテーブル名等がUTF8である必要があるので、変換しようとしています。
ADODB.Streamを使用するのが一般的なようなので、以下のコードを書いたのですが、うまくいきません。
現象としては、下記コード中の2か所のMsgBoxの出力が空であるとうことです。
WriteText がうまくいってないのか、ReadTextの使い方が間違っているのかと悩んています。
詳しい方にアドバイスをいただけますと幸いです。
VBA
1Public Sub test() 2 Dim adoStreamSJIS As ADODB.Stream 3 Dim adoStreamUTF8 As ADODB.Stream 4 Dim bufSJIS As String 5 Dim bufUTF8 As String 6 7 bufSJIS = "あいうえお" 8 9 Set adoStreamSJIS = New ADODB.Stream 10 With adoStreamSJIS 11 .Charset = "SJIS" 12 .Open 13 .Type = adTypeText 14 '.Type = adTypeBinary 15 End With 16 17 Set adoStreamUTF8 = New ADODB.Stream 18 With adoStreamUTF8 19 .Charset = "UTF-8" 20 .Open 21 .Type = adTypeText 22 '.Type = adTypeBinary 23 End With 24 25 adoStreamSJIS.WriteText bufSJIS, 1 26 MsgBox adoStreamSJIS.ReadText 27 adoStreamSJIS.CopyTo adoStreamUTF8 28 bufUTF8 = adoStreamUTF8.ReadText 29 MsgBox bufUTF8 30 31 adoStreamSJIS.Close 32 adoStreamUTF8.Close 33 34 Set adoStreamSJIS = Nothing 35 Set adoStreamUTF8 = Nothing 36 37End Sub
> VBAの中からDBにSQLを発行する際にテーブル名等がUTF8である必要がある
どのようにSQLを発行しているのですか?
DAOで行う分にはそんな縛りはなかったと思うのですが。
ODBC経由ならsjis→utf8変換はコードページの指定をすればやってくれますし
ひょっとして、
VBAコード内でSQL文を生成しようとしているが、テーブル名にSJISにない文字が含まれているので、VBAエディター上では入力できない、ということかな。
だとしたら、そのテーブル名を提示してもらえますか。
上記の推測が外れているなら、スルーしてください。
「VBAの中からDBにSQLを発行する際」のコードを提示された方がいいかも。で、どこでうまくいかないのか説明された方がいいですね。
saziさんが言われるようにDAOでもADODBでもそのような縛りはないので。

回答3件
あなたの回答
tips
プレビュー