EXCEL2000のマクロ(ADO)にてCSVデータ取得しようとしたら取得出来ないデータがあります。
前にも質問させていただいたのですが、
CSVデータを取得しようとした時に取得出来ないデータ(文字列)があります。
初めはADOのデータ取得部分のマクロが間違えていると思っていましたが、
特に間違えている事もありませんでした。
悩んでいる内に私の端末ではいつの間にか取得出来ていなかったデータが取得出来るように
なっていました。
(この間にマクロをいじったりはしていません。しかし何かしらの設定を触ってしまった
可能性はあります。)
おかしいと思い、他の端末で同じマクロとCSVデータにて検証を行ってみると、
やはりデータの取得は出来ていませんでした。
なぜ私の端末だけうまくいくようになったのかがまったく検討もつきません。
OFFICEの再インストールも行ってみましたが、やはり自分の端末ではうまくいって、
他の端末ではデータは取得出来ないようでした。
情報が少なすぎる&あいまいな表現になってしまいましたが、
この原因はどのようなことが考えられるか、どなたかご教授いただけないでしょうか?
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>どうしてもADOで読み込む必要があるなら
>VBAコード内でCSVファイルにダミーデータを挿入した上で読み込み、
>読み込み後ダミーデータを削除するなどの対処になります。
...失礼orz
これだと面倒ですよね。
[test.csv]
ColNameHeader=false
Format=CSVDelimited
MaxScanRows=0
CharacterSet=OEM
Col1=F1 Memo
Col2=F2 Memo
:
こんな感じのschema.iniファイルを作成して対処したほうが良いかと思います。
256文字以上の文字列を含む列をMemo型で指定します。
No.4
- 回答日時:
重複投稿後の対処の仕方がまずいです。
情報が錯綜して回答・閲覧側が混乱します。
どちらかでまとめてください。
ついでに。
原因にはもうあたりがついてるので言及しませんでしたが
>最低限、実行コードとテストデータ、貴方の環境情報の提示が必要でしょう。
>#提示可能ならこちらでテストしてみても良いですが。
と書きましたけど、提示がなかったので、
後は質問者さんご自身で確認して解決されるのだろうなあと推測しています。
遠慮もあったのでしょうけど。
でもExcel系のQ&A掲示板では、実際の数式やVBAコード、
データサンプルの提示があるほうが早く解決に結びつきやすいです。
OSやExcelのバージョン情報などもあったほうが良いです。
次回からはそんな事も検討してみてください。
そして本要件の対策ですが、
>911文字のダミーデータを置いて読み込んでみてください。
これで他端末でも読み込めるなら文字列長の問題です。
どうしてもADOで読み込む必要があるなら
VBAコード内でCSVファイルにダミーデータを挿入した上で読み込み、
読み込み後ダミーデータを削除するなどの対処になります。
ただ、本番データも500件程度なら普通に開いてコピー処理しても
良いのではないかと思いますけども。
No.3
- 回答日時:
#1です。
> ・出力されているExcelでのデータをみてみると、、
> そのセルをクリックするまでは"#########"で文字化け?している。
> (正しく出力されているデータでも"########"で表示されているデータが存在する。)
セルをクリック「するまでは」ということは、クリック「することで」正しいデータが表示されるんですね?
それはEXCELの表示の問題ではありませんかね?
CSVファイル自体は正しいが、「EXCELで表示するとおかしい」ということ。
よくある「住所を日付と勘違いされてしまう」みたいな、ビュアーとして振舞うEXCELの「勘違い」のような気がする。
CSVファイルの「その症状がある」行・列にあたりを付けてテキストエディタで開いて見れば良いでしょう。
元データが アルファベット"E"と数字で構成されていて、「指数表現と解釈されて表示桁が足りない」に行き着くように思います。
(例:[11A0123]は正しく表示されるが、[04E0123]だと化ける、みたいな)
No.2
- 回答日時:
情報がやや曖昧で見当がつきません・
> CSVデータを取得しようとした時に取得出来ないデータ(文字列)があります
☆ CSVファイルによって、データが取得できたりできなかったりする状況が違うのでしょうか。
どのファイルでも同様に、データが取得できたりできなかったりする状況が違うのでしょうか。
どのファイルのデータでも、一切データが取得できないのでしょうか。
(特定ファイル)だけ、あるいは(特定ファイル中の、特定部分のデータ)だけが問題なのでしょうか。
もしも、(すべてのファイルがどれも、一切のデータを取得できない)&(前にダメだったのに自分のPCだけはいつでもできるようになった)&(今も他のPCでは絶対にできない)のであるならば、経験的には、次のようなことがありました。
1) ADOの参照設定をうっかり外した、ADOの参照設定をしないで実行している
2) マクロの読み込み先ファイルのpath指定と異なるディレクトリに、ファイルを移した
やはり、多少は問題が絞れるような情報を提供してくださった方が、回答も考えやすいと思います。
場合によっては、コードを示しても良いのではないでしょうか。
この回答への補足
回答ありがとうございます。
すみません。
完全に情報不足でした。
データが取得できない端末にてそのパターンを調べましたところ、
以下のような状態でした。
・データ約500件中、取得出来ていないデータは一つの列で、約30件ほどあった。
・本来その列に入るデータは文字列で、だいたいどれも800バイト前後。
(正しく出力されているデータでもだいたい同じくらい)
・出力されているExcelでのデータをみてみると、、
そのセルをクリックするまでは"#########"で文字化け?している。
(正しく出力されているデータでも"########"で表示されているデータが存在する。)
・その行のみの1行のCSVで取込むと取得される。
と規則性があまり見つからない状態でした。
ご回答にありましたように、ADOの参照設定も正常ですし、pathの指定も
問題ないように思います。
また、もともとデータが取得できていなかった端末で、
マクロを触ったりしていませんので、マクロの問題というより
その他の部分にあるように思えます。
せっかく回答していただいたのにあいまいで申し訳ありません。
No.1
- 回答日時:
実際に起きた症状・メッセージくらいは書いてください。
> EXCEL2000のマクロ(ADO)にてCSVデータ取得
ODBCのTextドライバー設定を行ったうえでの取得ですか?
ODBC設定しているなら、UDL(ユニバーサルデータリンク)で接続試験しましたか?
うまく行くPCと行かないPCで、データ配置が異なるとか。
CSVデータをデスクトップ上におくと、Pathにユーザ名やスペースを挟むので、
ドライブ直下に配置するとか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- Excel(エクセル) excelの列幅高さが勝手に変わる(特定のPCだけ) 8 2022/07/14 16:51
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Excel(エクセル) Excelについて教えてください。 帳票データがあります。 アクセスに取り込むため、 データ形式にし 1 2022/06/08 19:59
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) マクロか関数で処理したいのですが、教えて頂けませんか。 8 2022/10/31 15:18
- Excel(エクセル) CSVファイルがカンマ区切りにならない。対処法を教えていただきたいです。 仕事でSMS一斉送信ができ 2 2022/07/01 21:24
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
GASでスプレッドシートの一番上...
-
DataGridViewで表示に制限をつ...
-
Listviewのデータを上から順番...
-
C# データ配列から画像を作成す...
-
VBA ピボットテーブル自動更新
-
GridViewにバインドせずにデー...
-
.NET SqlDataReader のレコー...
-
表にフィルターをかけ、絞った...
-
テキストボックスのvalueとtext...
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
ExcelのINDEXとMATCH関数でスピ...
-
Accessのクエリで、replace関数...
-
サーバ時刻の取得
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
VB.NETで DataRow()を利用して...
-
数値を通貨型に変換して(1000...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
Listviewのデータを上から順番...
-
GASでスプレッドシートの一番上...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
MSFlexGridのデータ表示位置の設定
-
GridViewにバインドせずにデー...
-
【ASP.NET MVC】一覧編集画面
-
エクセルマクロ小数点桁数
-
VB6 → EXCEL にデーター出力
-
DataGridViewで表示に制限をつ...
-
yahoo天気の過去1ヶ月分のデー...
-
コンパイルエラーSubまたは...
-
C# データ配列から画像を作成す...
-
エクセルVBAによるマトリク...
-
VB.NETにてDB2のBLOB型のデータ...
-
GridViewを自動的にスクロール...
-
ListViewで条件によって表示を...
-
Visual C++ 6.0で ODBCを使用せ...
おすすめ情報