こんばんわ。
初質問です。
よろしかったらご教授ください。
CSV→Excelに変換という流れについてです。
CSV→Excelデータの取り込みはADOにて行っているんですが、
あるデータ(文字列形式)が取込めず、CSVでは空白が出力されてしまいます。
もちろんExcel上ではあたいは入っています。
原因がまったく分からなかったのでADOにての取得をやめて、
コピーでデータの取得を行おうと思い、マクロを組みなおして
比較テストを行いました。
すると、ここで気づいたんですが、修正前のExcelで取込んだ結果で、
先ほどまでうまく値が取得できていなかった部分がうまく取得できていました。
修正前のExcelでは特にマクロをいじったりもしていませんし、設定も
変更していません。
これでいいのかなとそのExcelファイルを他の端末で検証してみると何故か
やはり値が取得出来ていませんでした。
結果的に最初は取得出来ていなかった値が自分の端末のみうまく
取得出来るようになったということです。
これはどういう理由で起きていることなのでしょうか?
ちなみに自分の端末のみうまくいくようになった後に、
Excelの再インストールも行ってみましたが、やはり
自分の端末のみうまく取得出来ているという現象が起きています。
No.2ベストアンサー
- 回答日時:
>・本来その列に入るデータは文字列で、だいたいどれも800バイト前後。
>そのセルをクリックするまでは"#########"で文字化け?している。
との事なので、文字列の長さ制限にひっかかってるだけでしょう。
読めたり読めなかったりしたのは、25行目までにその列の最大文字数のデータがあったかどうかの違いです。
(25行目まででデータをスキャンして読み込むデータ型が判断されていると思われます)
"#########"となっているのはExcel側のセル書式設定が「文字列」になっているからです。
[標準]にしてみてください。
試しに、読めないCSVファイルのデータ列の1行目に、
=rept("a",911)
などとして作った911文字のダミーデータを置いて読み込んでみてください。
>・並びも含め全く同一のCSVデータか確認してみる
と書いたハズだったんだけど。
#911文字...Excel2003でCopyFromRecordsetを使っていた場合、
#912文字以上はエラーで書き込めない為。
ありがとうございます。
確かに911文字の挿入することで
解決しました。
Excelにも知らないことがたくさんあるんだなぁと思いました。
質問自体もわかりにくいのにうまく読み取ってくださって
本当に助かりました。
ありがとうございます。
No.1
- 回答日時:
情報不足なので明確に答える事ができるわけではありませんが、
全く同じデータを使って、端末によって違いがある場合、
・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以外の手法を用いることも
検討している次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
ASP C# データベースから1行取得
-
ASP.Net ObjectDataSource
-
GASでスプレッドシートの一番上...
-
コンパイルエラーSubまたは...
-
GridViewにバインドせずにデー...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
複数の項目を一つの欄で表示したい
-
DataGridViewで表示に制限をつ...
-
ListViewで条件によって表示を...
-
ページ内の特定の部分の取得
-
count(*)で取得した値をJAVAの...
-
VB.NETで DataRow()を利用して...
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
データ数をカウントしたいのですが
-
Excelのプルダウンで2列分の情...
-
テキストボックスのvalueとtext...
-
i=cells(Rows.Count, 1)とi=cel...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
GridViewにバインドせずにデー...
-
【ASP.NET MVC】一覧編集画面
-
ASP C# データベースから1行取得
-
MSFlexGridのデータ表示位置の設定
-
コンパイルエラーSubまたは...
-
C# データ配列から画像を作成す...
-
エクセルマクロ小数点桁数
-
DataGridViewで表示に制限をつ...
-
スプレッドシート 一括でQRコー...
-
GridViewを自動的にスクロール...
-
DBへの重複更新を防ぐ方法について
-
エクセルVBA、数式の入ったセル...
-
GoogleEarthのKMLファイルでラ...
-
VB DataRepeaterにて条件で表示
おすすめ情報