dポイントプレゼントキャンペーン実施中!

こんばんわ。
初質問です。
よろしかったらご教授ください。

CSV→Excelに変換という流れについてです。
CSV→Excelデータの取り込みはADOにて行っているんですが、
あるデータ(文字列形式)が取込めず、CSVでは空白が出力されてしまいます。
もちろんExcel上ではあたいは入っています。

原因がまったく分からなかったのでADOにての取得をやめて、
コピーでデータの取得を行おうと思い、マクロを組みなおして
比較テストを行いました。
すると、ここで気づいたんですが、修正前のExcelで取込んだ結果で、
先ほどまでうまく値が取得できていなかった部分がうまく取得できていました。
修正前のExcelでは特にマクロをいじったりもしていませんし、設定も
変更していません。

これでいいのかなとそのExcelファイルを他の端末で検証してみると何故か
やはり値が取得出来ていませんでした。

結果的に最初は取得出来ていなかった値が自分の端末のみうまく
取得出来るようになったということです。
これはどういう理由で起きていることなのでしょうか?

ちなみに自分の端末のみうまくいくようになった後に、
Excelの再インストールも行ってみましたが、やはり
自分の端末のみうまく取得出来ているという現象が起きています。

A 回答 (2件)

>・本来その列に入るデータは文字列で、だいたいどれも800バイト前後。


>そのセルをクリックするまでは"#########"で文字化け?している。
との事なので、文字列の長さ制限にひっかかってるだけでしょう。
読めたり読めなかったりしたのは、25行目までにその列の最大文字数のデータがあったかどうかの違いです。
(25行目まででデータをスキャンして読み込むデータ型が判断されていると思われます)

"#########"となっているのはExcel側のセル書式設定が「文字列」になっているからです。
[標準]にしてみてください。



試しに、読めないCSVファイルのデータ列の1行目に、
=rept("a",911)
などとして作った911文字のダミーデータを置いて読み込んでみてください。

>・並びも含め全く同一のCSVデータか確認してみる
と書いたハズだったんだけど。

#911文字...Excel2003でCopyFromRecordsetを使っていた場合、
#912文字以上はエラーで書き込めない為。
    • good
    • 0
この回答へのお礼

ありがとうございます。
確かに911文字の挿入することで
解決しました。
Excelにも知らないことがたくさんあるんだなぁと思いました。

質問自体もわかりにくいのにうまく読み取ってくださって
本当に助かりました。
ありがとうございます。

お礼日時:2010/06/28 10:28

情報不足なので明確に答える事ができるわけではありませんが、


全く同じデータを使って、端末によって違いがある場合、
・Excelのバージョン、spの違い
・ADOのバージョン違い
・OSのバージョン違い
・他アプリケーションの影響によるレジストリ設定違い
・Schema.iniファイルの存在
...などが可能性として考えられます。
再インストール後も違いがあるという事なので
Excel以外の環境である事は確かですよね。
その場合、原因の追求は難しいのではないでしょうか。
詳細を調べて情報開示が必要になってくると思われます。
最低限、実行コードとテストデータ、貴方の環境情報の提示が必要でしょう。
#提示があったとしても回答側で再現できなければ厳しいかと思いますが

なので、確認のポイントとしては
・並びも含め全く同一のCSVデータか確認してみる
・CSV同一フォルダのSchema.iniファイルの有無を確認してみる
・OS、Excelのバージョン等、できるだけ環境が近いものでテストしてみる
・ADOで使用したプロバイダやドライバのレジストリ値の設定を確認してみる
などが挙げられますので、質問者さんご自身で検証なさってみてください。
#提示可能ならこちらでテストしてみても良いですが。

最終的にどの端末でも取得できるようにしたいという事なら、
・Schema.iniファイルを使う
・ADO以外の手法(例えばQueryTablesなど)に切り替える
等、検討されてはいかがでしょう。

(参考)
http://support.microsoft.com/kb/257819/ja
Excelへの接続ですが、Textデータ取り込み時も共通する事項がありますので
参考になるかもしれません。

この回答への補足

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

Excelのバージョンの変更を行う前に(同じバージョンのExcel)
取得出来なかったデータが取得出来るようになりました。
よって、ご回答にあったバージョンの違いではなさそうです。

また、データが取得できない端末にてそのパターンを調べましたところ、
以下のような状態でした。

・データ約500件中、取得出来ていないデータは一つの列で、約30件ほどあった。

・本来その列に入るデータは文字列で、だいたいどれも800バイト前後。
 (正しく出力されているデータでもだいたい同じくらい)

・出力されているExcelでのデータをみてみると、、
そのセルをクリックするまでは"#########"で文字化け?している。
 (正しく出力されているデータでも"########"で表示されているデータが存在する。)

・その行のみの1行のCSVで取込むと取得される。

と規則性があまり見つからない状態でした。

出来ることならこのことの原因と対策を見つけ出したいところですが、

ご指摘の通り、Schema.iniファイルやADO以外の手法を用いることも

検討している次第です。

補足日時:2010/06/26 22:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!