Excel(VBA)からODBCへのSQLに含まれる"𠮷"等の文字がが化ける

Anonymous
2023-12-27T07:51:34+00:00

お世話になります。

Excel(VBA)からDB(MySQL)へSQL「select test('𠮷');」を実行すると、 ODBCへ渡るSQLが「select test('𐮷');;」と”𠮷”の部分が化けます。

("💛"のように化けない文字もあります。)

★原因と対策をご教示願います。

※SQL内の"test"とはDB(MySQL)のFUNCTION名です。

<OODBCへの渡ったSQLの取得方法 >

ODBCのデバック設定を有効にして、ログを取得しました。

<Excel(VBA)内容>

Sub DoSql()

Dim ws As Worksheet 

Set ws = ThisWorkbook.Worksheets("SQL\_local") 

Dim con As Object 

Set con = CreateObject("ADODB.Connection") 

con.Open "locald8.2" 

con.CursorLocation = 3 

Dim rs As Object 

Set rs = CreateObject("ADODB.Recordset") 

Dim SQL As String 

'セル「ws.Cells(2, 2)」にSQL「select test('𠮷');」を設定してます。 

SQL = ws.Cells(2, 2) 

ws.Cells(5, 2).Clear 

Dim aryByte() As Byte

aryByte = SQL

rs.Open SQL, con 

ws.Cells(5, 2).CopyFromRecordset rs 

rs.Close 

Set rs = Nothing 

Set con = Nothing 

Call MsgBox("処理終了") 

End Sub

<こちらでの調査内容>

・変数「SQL」には想定通りの値が格納されていることを、バイト配列変数「aryByte」で確認済み。

"𠮷"に相当するバイト配列値が"66 216 183 223"と、"𠮷"に該当するUTF-16LE(10進数)になります。

(UTF-16BEだと0xD842、0xDFB7)

・OODBCへの渡ったSQLの"𠮷"に相当するUTF-16BEが"0xD802、0xDFB7"と、"42"が"02"に変わっている。

★ここの原因と対策が知りたいです。

<実行環境>

・Excel:365 MSO (バージョン 2302 ビルド 16.0.16130.20298) 64 ビット

・ODBCドライバ:MySQL ODBC 8.2 Unicode Driver

Microsoft 365 と Office | Excel | ビジネス向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

simo-k 88,335 評価のポイント ボランティア モデレーター
2023-12-27T08:01:19+00:00

VBAの公式サポート場所は海外となっています。

VBA(マクロ)に関しては、海外コミュニティで聞いて下さい。

Stack Overflow(VBA)

  [VBA プログラミングに関する質問]

  Stack Overflow には、説明的なタイトル、完全で簡潔な問題ステートメント、問題を再現する
  ための十分な詳細の要求などのガイドラインがあることに注意してください。
  機能要求または過度に広範な質問は、トピック外と見なされます。
  新しいユーザーの場合は、Stack Overflow ヘルプ センター にアクセスして詳細を確認して下さい。

※ 閲覧者・回答者が多い公式サポートサイトをお勧めします。

  英語で質問を送信してください。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

1 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2023-12-28T04:16:13+00:00

    ご回答ありがとうございます。

    VBAに関する質問は、ここではないとのこと、承知しました。

    「海外コミュニティ」の「公式サポートサイト」のURLをご紹介いただけないでしょうか?

    Stack Overflow(VBA)は、(Microsoftの?)公式サポートサイトではないですよね?

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません