こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

EXCEL2000のマクロ(ADO)にてCSVデータ取得しようとしたら

EXCEL2000のマクロ(ADO)にてCSVデータ取得しようとしたら取得出来ないデータがあります。

前にも質問させていただいたのですが、

CSVデータを取得しようとした時に取得出来ないデータ(文字列)があります。

初めはADOのデータ取得部分のマクロが間違えていると思っていましたが、

特に間違えている事もありませんでした。

悩んでいる内に私の端末ではいつの間にか取得出来ていなかったデータが取得出来るように

なっていました。
(この間にマクロをいじったりはしていません。しかし何かしらの設定を触ってしまった
可能性はあります。)

おかしいと思い、他の端末で同じマクロとCSVデータにて検証を行ってみると、

やはりデータの取得は出来ていませんでした。

なぜ私の端末だけうまくいくようになったのかがまったく検討もつきません。

OFFICEの再インストールも行ってみましたが、やはり自分の端末ではうまくいって、

他の端末ではデータは取得出来ないようでした。

情報が少なすぎる&あいまいな表現になってしまいましたが、
この原因はどのようなことが考えられるか、どなたかご教授いただけないでしょうか?

投稿日時 - 2010-06-26 17:29:09

QNo.5996792

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.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型で指定します。

投稿日時 - 2010-06-27 18:38:02

ANo.4

http://okwave.jp/qa/q5995389.html
重複投稿後の対処の仕方がまずいです。
情報が錯綜して回答・閲覧側が混乱します。
どちらかでまとめてください。



ついでに。
原因にはもうあたりがついてるので言及しませんでしたが
>最低限、実行コードとテストデータ、貴方の環境情報の提示が必要でしょう。
>#提示可能ならこちらでテストしてみても良いですが。
と書きましたけど、提示がなかったので、
後は質問者さんご自身で確認して解決されるのだろうなあと推測しています。
遠慮もあったのでしょうけど。

でもExcel系のQ&A掲示板では、実際の数式やVBAコード、
データサンプルの提示があるほうが早く解決に結びつきやすいです。
OSやExcelのバージョン情報などもあったほうが良いです。
次回からはそんな事も検討してみてください。



そして本要件の対策ですが、
>911文字のダミーデータを置いて読み込んでみてください。
これで他端末でも読み込めるなら文字列長の問題です。
どうしてもADOで読み込む必要があるなら
VBAコード内でCSVファイルにダミーデータを挿入した上で読み込み、
読み込み後ダミーデータを削除するなどの対処になります。

ただ、本番データも500件程度なら普通に開いてコピー処理しても
良いのではないかと思いますけども。

投稿日時 - 2010-06-27 15:15:42

ANo.3

#1です。

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

それはEXCELの表示の問題ではありませんかね?
CSVファイル自体は正しいが、「EXCELで表示するとおかしい」ということ。
よくある「住所を日付と勘違いされてしまう」みたいな、ビュアーとして振舞うEXCELの「勘違い」のような気がする。

CSVファイルの「その症状がある」行・列にあたりを付けてテキストエディタで開いて見れば良いでしょう。


元データが アルファベット"E"と数字で構成されていて、「指数表現と解釈されて表示桁が足りない」に行き着くように思います。
(例:[11A0123]は正しく表示されるが、[04E0123]だと化ける、みたいな)

投稿日時 - 2010-06-27 09:59:57

情報がやや曖昧で見当がつきません・
> CSVデータを取得しようとした時に取得出来ないデータ(文字列)があります
☆ CSVファイルによって、データが取得できたりできなかったりする状況が違うのでしょうか。
  どのファイルでも同様に、データが取得できたりできなかったりする状況が違うのでしょうか。
  どのファイルのデータでも、一切データが取得できないのでしょうか。
  (特定ファイル)だけ、あるいは(特定ファイル中の、特定部分のデータ)だけが問題なのでしょうか。

もしも、(すべてのファイルがどれも、一切のデータを取得できない)&(前にダメだったのに自分のPCだけはいつでもできるようになった)&(今も他のPCでは絶対にできない)のであるならば、経験的には、次のようなことがありました。
1) ADOの参照設定をうっかり外した、ADOの参照設定をしないで実行している
2) マクロの読み込み先ファイルのpath指定と異なるディレクトリに、ファイルを移した

やはり、多少は問題が絞れるような情報を提供してくださった方が、回答も考えやすいと思います。
場合によっては、コードを示しても良いのではないでしょうか。

投稿日時 - 2010-06-26 18:21:39

補足

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

すみません。
完全に情報不足でした。

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

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

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

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

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

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

ご回答にありましたように、ADOの参照設定も正常ですし、pathの指定も
問題ないように思います。

また、もともとデータが取得できていなかった端末で、

マクロを触ったりしていませんので、マクロの問題というより

その他の部分にあるように思えます。

せっかく回答していただいたのにあいまいで申し訳ありません。

投稿日時 - 2010-06-26 22:42:42

ANo.1

実際に起きた症状・メッセージくらいは書いてください。

> EXCEL2000のマクロ(ADO)にてCSVデータ取得
ODBCのTextドライバー設定を行ったうえでの取得ですか?

ODBC設定しているなら、UDL(ユニバーサルデータリンク)で接続試験しましたか?


うまく行くPCと行かないPCで、データ配置が異なるとか。
CSVデータをデスクトップ上におくと、Pathにユーザ名やスペースを挟むので、
ドライブ直下に配置するとか。

投稿日時 - 2010-06-26 17:36:23

補足

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

接続自体はうまくいっている模様です。

投稿日時 - 2010-06-26 22:43:49

あなたにオススメの質問