VBAでテキストデータを読み込む

ずいぶんご無沙汰して申し訳ございません。

2,3日前から気にかかっていたことが、今日解決しましたのでご報告します。

標題の件はネットでもいろいろ情報がありますよね。私もあるソフトから出力されたテキストデータをAccessのテーブルに1件ずつ取り込むことを考えたんです。テキストデータが出力されるなら、カンマ区切りが普通だと思っていたんですが、それをExcelで開こうとすると出力されているデータの一部が表示されないことが分かったんです。

それでもって、タブ区切りのほうが精度がいいことが分かってからは、これをデフォルトと考えるようになりました。

話はここからです。ところで、ある海外製のソフト、といっても日本語対応しているものなのですが、そこから出力されたテキストデータを、いつもの通りVBAで1件ずつAccessテーブルに取り込もうとしたら、強制終了してしまうんです。ただし、インポート定義を使ってインポートすると取り込めるんです。

コードは間違っていないだろうしと不思議に思って、イミディエイトウインドウでデバッグしながら値を確認するとどうもおかしい。もしやと思って出力されたテキストデータの文字コードを見るとUnicodeでした。がーん。

気を付けないといけないですね。VBAはShift-JISがデフォルトですから。

前はこれ
Open strFilePath For Input As #FNo
Line Input #FNo, txtData


これに変更
Dim strLine As String
Dim adoSt As Object
Set adoSt = CreateObject("ADODB.Stream")

With adoSt
        .Charset = "Unicode"
        .Open
        .LoadFromFile (strFile)
        strLine = .ReadText(adReadLine)  '1行目項目名カラ読み
        Do Until .EOS
        strLine = .ReadText(adReadLine) '2行目から

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント