@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

文字化けです。MYSQLをODBC接続でExcelのVBで

1
投稿者投稿内容
yasubou_4d
会議室デビュー日: 2007/05/08
投稿数: 2
投稿日時: 2007-05-08 11:49
初心者です。よろしくお願いいたします。

エクセルでODBC接続でMYSQLテーブルデータから取りたいのですが日本語が文字化けしま
す。エクセルのツールバーのデータの「外部データーの取り込み」では文字化けせずに正常に取り込みするこ
とができますが、VBコードで抽出すると日本語の部分が「????????」と文字化けしま
す。 どなたかご教授お願いいたします。

PCの環境およびVBコードは下記です。
windows XP HE
MySql5.0
myODBC3.51 (※set names sjisi設定)
Excel 2002
apache HTTP Server 1.3.26

mysql character set は下記です。
character_set_cliant ---> sjis
character_set_connection ---> sjis
character_set_database ---> sjis
character_set_filesystem ---> binary
character_set_results ---> sjis
character_set_server ---> sjis
character_set_system ---> utf8 (※sjisに統一したいのですが方法がわかりませんのでutf8のままです。)

---------独立モジュール
' データベースとレコードセットへのオブジェクト変数
Public Cn As New ADODB.Connection ' データベースへの接続
Public Rs As ADODB.Recordset ' レコードセット
P_CnString = "DRIVER={MySQL ODBC 3.51 Driver};" _
& "SERVER=***.***.***.***;" _
& " DATABASE=DB_Name;" _
& "UID=****; password=********; OPTION=3"
Function P_OpenDatabase() As Integer
Cn.ConnectionString = P_CnString() ' データベース接続文字の取得
Cn.Open ' データベースへの接続

---------オブジェクトモジュール

Dim Sh4 As String
Dim TableName As String ' MySQLテーブル名
Dim Sq1 As String ' MySQLステートメント文字列
TableName = "seihin"
Sh4 = "Sheet3"

Sq1 = "SELECT * from " & TableName & " ORDER BY no"
Set Rs = New ADODB.Recordset 'レコードセットの初期化
Rs.Open Sq1, Cn
Rs.MoveFirst
Sheets(Sh4).Activate
ActiveSheet.Range("A2").CopyFromRecordset Rs'<---文字化けします。
------------
以上です。
未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-05-08 16:21
MyODBCの設定はあってます?参考(EUC変換の部分)
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2007-05-08 16:46
ぜんぜん詳しくないのですが。

文字化け/文字コードを見ていたら、MySQL4.1での文字化けというのがありました。

MYSQL のバージョンは違いますが、ドライバのバージョンは同じようなのでうまくいかないかな、と。

接続文字列内にも文字コードの設定が出来るようです。
ダメ元で試してみてはいかがでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)