• 締切済み

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

EXCEL2000のマクロ(ADO)にてCSVデータ取得しようとしたら取得出来ないデータがあります。 前にも質問させていただいたのですが、 CSVデータを取得しようとした時に取得出来ないデータ(文字列)があります。 初めはADOのデータ取得部分のマクロが間違えていると思っていましたが、 特に間違えている事もありませんでした。 悩んでいる内に私の端末ではいつの間にか取得出来ていなかったデータが取得出来るように なっていました。 (この間にマクロをいじったりはしていません。しかし何かしらの設定を触ってしまった 可能性はあります。) おかしいと思い、他の端末で同じマクロとCSVデータにて検証を行ってみると、 やはりデータの取得は出来ていませんでした。 なぜ私の端末だけうまくいくようになったのかがまったく検討もつきません。 OFFICEの再インストールも行ってみましたが、やはり自分の端末ではうまくいって、 他の端末ではデータは取得出来ないようでした。 情報が少なすぎる&あいまいな表現になってしまいましたが、 この原因はどのようなことが考えられるか、どなたかご教授いただけないでしょうか?

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答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型で指定します。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

http://okwave.jp/qa/q5995389.html 重複投稿後の対処の仕方がまずいです。 情報が錯綜して回答・閲覧側が混乱します。 どちらかでまとめてください。 ついでに。 原因にはもうあたりがついてるので言及しませんでしたが >最低限、実行コードとテストデータ、貴方の環境情報の提示が必要でしょう。 >#提示可能ならこちらでテストしてみても良いですが。 と書きましたけど、提示がなかったので、 後は質問者さんご自身で確認して解決されるのだろうなあと推測しています。 遠慮もあったのでしょうけど。 でもExcel系のQ&A掲示板では、実際の数式やVBAコード、 データサンプルの提示があるほうが早く解決に結びつきやすいです。 OSやExcelのバージョン情報などもあったほうが良いです。 次回からはそんな事も検討してみてください。 そして本要件の対策ですが、 >911文字のダミーデータを置いて読み込んでみてください。 これで他端末でも読み込めるなら文字列長の問題です。 どうしてもADOで読み込む必要があるなら VBAコード内でCSVファイルにダミーデータを挿入した上で読み込み、 読み込み後ダミーデータを削除するなどの対処になります。 ただ、本番データも500件程度なら普通に開いてコピー処理しても 良いのではないかと思いますけども。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.3

#1です。 > ・出力されているExcelでのデータをみてみると、、 > そのセルをクリックするまでは"#########"で文字化け?している。 >  (正しく出力されているデータでも"########"で表示されているデータが存在する。) セルをクリック「するまでは」ということは、クリック「することで」正しいデータが表示されるんですね? それはEXCELの表示の問題ではありませんかね? CSVファイル自体は正しいが、「EXCELで表示するとおかしい」ということ。 よくある「住所を日付と勘違いされてしまう」みたいな、ビュアーとして振舞うEXCELの「勘違い」のような気がする。 CSVファイルの「その症状がある」行・列にあたりを付けてテキストエディタで開いて見れば良いでしょう。 元データが アルファベット"E"と数字で構成されていて、「指数表現と解釈されて表示桁が足りない」に行き着くように思います。 (例:[11A0123]は正しく表示されるが、[04E0123]だと化ける、みたいな)

回答No.2

情報がやや曖昧で見当がつきません・ > CSVデータを取得しようとした時に取得出来ないデータ(文字列)があります ☆ CSVファイルによって、データが取得できたりできなかったりする状況が違うのでしょうか。   どのファイルでも同様に、データが取得できたりできなかったりする状況が違うのでしょうか。   どのファイルのデータでも、一切データが取得できないのでしょうか。   (特定ファイル)だけ、あるいは(特定ファイル中の、特定部分のデータ)だけが問題なのでしょうか。 もしも、(すべてのファイルがどれも、一切のデータを取得できない)&(前にダメだったのに自分のPCだけはいつでもできるようになった)&(今も他のPCでは絶対にできない)のであるならば、経験的には、次のようなことがありました。 1) ADOの参照設定をうっかり外した、ADOの参照設定をしないで実行している 2) マクロの読み込み先ファイルのpath指定と異なるディレクトリに、ファイルを移した やはり、多少は問題が絞れるような情報を提供してくださった方が、回答も考えやすいと思います。 場合によっては、コードを示しても良いのではないでしょうか。

ddtanaka
質問者

補足

回答ありがとうございます。 すみません。 完全に情報不足でした。 データが取得できない端末にてそのパターンを調べましたところ、 以下のような状態でした。 ・データ約500件中、取得出来ていないデータは一つの列で、約30件ほどあった。 ・本来その列に入るデータは文字列で、だいたいどれも800バイト前後。  (正しく出力されているデータでもだいたい同じくらい) ・出力されているExcelでのデータをみてみると、、 そのセルをクリックするまでは"#########"で文字化け?している。  (正しく出力されているデータでも"########"で表示されているデータが存在する。) ・その行のみの1行のCSVで取込むと取得される。 と規則性があまり見つからない状態でした。 ご回答にありましたように、ADOの参照設定も正常ですし、pathの指定も 問題ないように思います。 また、もともとデータが取得できていなかった端末で、 マクロを触ったりしていませんので、マクロの問題というより その他の部分にあるように思えます。 せっかく回答していただいたのにあいまいで申し訳ありません。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

実際に起きた症状・メッセージくらいは書いてください。 > EXCEL2000のマクロ(ADO)にてCSVデータ取得 ODBCのTextドライバー設定を行ったうえでの取得ですか? ODBC設定しているなら、UDL(ユニバーサルデータリンク)で接続試験しましたか? うまく行くPCと行かないPCで、データ配置が異なるとか。 CSVデータをデスクトップ上におくと、Pathにユーザ名やスペースを挟むので、 ドライブ直下に配置するとか。

ddtanaka
質問者

補足

ご回答ありがとうございます。 接続自体はうまくいっている模様です。

関連するQ&A

  • こんばんわ。

    こんばんわ。 初質問です。 よろしかったらご教授ください。 CSV→Excelに変換という流れについてです。 CSV→Excelデータの取り込みはADOにて行っているんですが、 あるデータ(文字列形式)が取込めず、CSVでは空白が出力されてしまいます。 もちろんExcel上ではあたいは入っています。 原因がまったく分からなかったのでADOにての取得をやめて、 コピーでデータの取得を行おうと思い、マクロを組みなおして 比較テストを行いました。 すると、ここで気づいたんですが、修正前のExcelで取込んだ結果で、 先ほどまでうまく値が取得できていなかった部分がうまく取得できていました。 修正前のExcelでは特にマクロをいじったりもしていませんし、設定も 変更していません。 これでいいのかなとそのExcelファイルを他の端末で検証してみると何故か やはり値が取得出来ていませんでした。 結果的に最初は取得出来ていなかった値が自分の端末のみうまく 取得出来るようになったということです。 これはどういう理由で起きていることなのでしょうか? ちなみに自分の端末のみうまくいくようになった後に、 Excelの再インストールも行ってみましたが、やはり 自分の端末のみうまく取得出来ているという現象が起きています。

  • CSVに変換するとデータが変わる

    ORACLEからSPOOLで表をCSV出力したのですが、なぜかある列だけの文字列が日付け型になってしまいます。 列のデータ型はVarchar2です。 TXTファイルにすると文字列で表示されます。 ファイルを開くExcel側に問題があるのでしょうか? 環境はORACLE9i、office2003です。

  • Microsoft Office Excel 2003でCSV形式のデータは取り込めますか?

    Microsoft Office Excel 2003でCSV形式のデータは取り込めますか? ######と表示されている箇所は正しく読み取れていないのでしょうか?

  • どの名前のcsvでも、マクロで取り込めるようにしたい。

    Excel2000のVBAで作成しております。 csvファイルからデータを取り込み、セットするマクロを作りたいのですが、 マクロファイルオープン時に選択するcsvファイルを、 その後のデータ抽出作業工程で対象にする時には、 どのように書けば良いのでしょうか? Workbooks("*.csv").Activateと書いてもエラーになってしまいました。 例えば Workbooks("オケーウェブ.csv").Activateと書けば オケーウェブ.csvをActivateに出来ることは分かったのですが、 その時によって、 オケーウェブ.csv ABC.csv 報告書.csvなどと、選択するcsvファイル名が異なります。 マクロファイルオープン時の一番最初に選択したcsvファイルをActivateにするには、 どのように書けば良いのでしょうか? どなたかご教授をお願いいたします。

  • CSVデータについての質問です。

    現在、EXCELのマクロを使用して会計システムに取込むCSVデータを作成しております。 データフォーマットを見るとディテール(細かなデータ)をヘッダーとトレーラーで挟み込む形になっています。 ヘッダーは3列、ディテールは20列、トレーラーは5列です。 これらをCSV形式で作成し、メモ帳を開くと以下のようになります。 <例> 1,200,090,624,2,,,,,,,,,,,,,,,(←ヘッダー) 2,1,2415,2415,0,1,2009,802,1915,,0,0,1,1,,1,1915,1915,111,200908 2,1,3125,3125,0,1,2009,802,2225,,0,0,1,1,,1,2225,2225,111,200908 2,1,3233,3233,0,1,2009,802,1563,,0,0,1,1,,1,1563,1563,111,200908 8,84,435053,0,0,,,,,,,,,,,,,,,(←トレーラー) このように20列に満たない分、ヘッダーとトレーラーに,(カンマ)が入ってしまい、この部分に,(カンマ)があるとデータを取込めません。 この部分のカンマを取るマクロがあれば教えていただきたいのですが。 よろしくお願いします。

  • CSVファイルのデータの行数を取得したい

    こちらではいつもお世話になっています。Perlに関して、初心者ですが教えてください。 CSVファイルについて、データの存在する行数を取得したいと考えています。自分なりに考えたところでは、下記の方法で取得できるのではと思ったのですが・・・・・ open(FH,"data.csv"); @array = <FH>; $count = $#array; close(FH); data.csvは、1行目から順にデータが入っています。 これで、$countに1を足せばCSVデータの行数になるのではないかと考えています。 しかし、実際に動かしてみると、$countには、data.csvにデータがあるのに「-1」(要素なし)が返ってきます。何か間違いがあるのでしょうか。 あるいは、別にCSVデータの行数を取得する方法が他にあれば、教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • csvファイルのデータ列数を取得したいのですがうまくいきません。

    csvファイルのデータ列数を取得したいのですがうまくいきません。 VB2010、StreamReaderでファイルを読み込み、 以下のコードで列数を取得してみたのですが、 数値変数の「列数」に7が入ります。 実際は3列しかありません。 SR.ReadLine()で読み込んだデータ右端部にいらないカンマがいくつか並んでいました。 列数 = UBound(Split(SR.ReadLine(), ",")) どう修正したらよいでしょうか。 また、csvファイルのデータ列数を簡単に取得する方法はないでしょうか? 教えてください。 お手数をおかけしますがよろしくお願いします。

  • CSVファイルへの文字列データの書き出しについて

    OS:WindowsXP、Excel:2003 です。 Excelマクロ(VBA)で、あるデータをCSVファイルに出力しているのですが、 文字列型(String)を書き出すと、必ずダブルクォーテーションで囲まれます。 CSVへ書き出すときは、そういう仕様になっているということは分かったのですが、 処理の都合上、どうしてもダブルクォーテーションで囲まずに書き出ししたいと思っています。 そういう場合にはどのようにすれば良いのか教えて下さい。 ちなみに、書き出しは「Write」を使っています。

  • よろしくお願いいたします。Excel2003で印刷等のマクロが入った5

    よろしくお願いいたします。Excel2003で印刷等のマクロが入った5MBほどファイルです。古いパソコンWin2000のExcel2003上では順調に稼働していました。それを新しいパソコンVista版office2007付・DELL STUDIO にExcel2003をインストールして実行したところ、印刷したいプレビューの画面にはなりますが、そこから印刷のボタンを押してデータが送信されているようなのですが、保留ドキュメント「ゼロ」のままで、印刷が実行されません。(先のファイルではマクロ以外に通常の範囲指定でのプレビューや印刷は行われています。)慌てているもので支離滅裂な表現お許し下さい。皆様のお力をお借りして原因理由をお教えいただければ幸いです。

  • エクセルマクロデーター取得の仕方

    エクセルマクロデーター取得の仕方 ホルダーexcell10の中に1~500.csvのファイルが500枚入ってます。 Application.Workbooks("excl10.xls").Activate Windows("1.csv").Activate とするとインデックスが有効範囲に有りません。とでます。1.csvをマウスでアクティブにしておくと、その下は動きます。次の2.csvになると又同じです。そこでcsvシートを10枚ずつActivateにして何回も繰り返してます。なんとか1行目に適切な呼び出し方法を教えてください。

専門家に質問してみよう