これで自分がやりたいことはできたので深く追求しないことにする。エラーメッセージはUnicodeで取得して、そのままUTF-8に変換してTclに渡すので、文字化けしなくなった。Excelドライバの時でもUnicode文字が文字化けしないようにした。†TclODBCのソースコードが読みにくい。C++な上、Tcl7.6とソースを共有してるので、古いTclのAPIが混在してる。BLTみたいにifdefで書き分けるスタイルだ。Tcl8.1以上にしてしまえばコードもすっきりするのに。あとUnicode対応とか文字列の扱いが結構昔のままだった。昔のコードの残骸があちこちに散らばってるので、きれいに書き直したくなる。思うのはどうやら俺だけではないようで、TclODBCをプレーンなCに書き直したやつもあるようだ。これはなぜかSWIG使ってる。これがSWIG無しで、綺麗にTEAとMINGWで完結できれば最高なんだが。今回パッチを書くのにODBCについてちょっと調べたけど、それほど難しいものでもなかったので、時間があったら自分でODBC3.5に対応したのを書いてみたい気もする。他にもODBC接続のライブラリは色々あるようだがイマイチどれも決め手に欠けメジャーになりきれてないようだ。ODBCの場合、VARCHARなのにUnicodeが格納されてるらしく、解決はしませんでした。TclODBCにExcel依存のコードを入れると他のデータベースに使ってる方に影響ありそうですし。11:47:01Excel側のデータはUnicodeなのにExcelのODBCドライバがSQL_VARCHARに変換してるんじゃ?ODBCドライバの制限なのでtclodbcに手を入れても無駄なような・・・。10:36:45結局ADODBでやったらできたんですが、せっかくなので新しいTclODBCでもできるようになったのを確認しました。ありがとうございました。