エクセル(OfficeXP)で、Webサーバからcsvをダウンロードしてインポートする方法(VBA)のサンプルはありませんか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:kaminoitte No.1

回答回数254ベストアンサー獲得回数0

ポイント1pt

こういうのですか?

id:P-mako

どれのことでしょうか?それらしきが見つからなかったので、再回答いただけると助かります。

2005/11/12 01:37:20
id:andi No.2

回答回数448ベストアンサー獲得回数0

ポイント59pt

WebサーバからファイルをダウンロードするにはxmlHttpRequestが楽ですね(XMLファイルじゃなくてもできます)。


Dim data As String

Dim req As Object

Set req = CreateObject(”Microsoft.xmlhttp”)


With req

Call .Open(”GET”, ”http://your_server/sample.csv”, True)

Call .send(vbNull)

If .readyState <> 4 Or .Status <> 200 Then

’ エラー処理

End If

data = .responseText

End With


ファイルをインポートするには一度ファイルに書き出してからエクセル固有のインポート機能を使うと便利だと思います。


’ ファイルに書き出し

Open ”sample.csv” For Output As #1

Print #1, data

Close #1


’ インポート

Call Workbooks.OpenText(”sample.csv”, , , xlDelimited, , , , , True)


以上

id:P-mako

すばらしいです。

こういう回答を期待してました。

ただ、サンプルを実践しましたが、エラーになります。

data = .responseText

のステートメントで

「実行時エラー’-2147467259 (80004005)’

 エラーを特定できません」

というVBのデバッグを促すダイアログが出ます。

ちなみにresponseTextの内容が、<システムエラー:-1072896658>となっています。

当然CSVのURLは、ieで直接開ける文字列をコピーペーストしています。

OfficeXPといっておきながら、Excel2000で試しているからでしょうか?

2005/11/13 13:06:01
  • id:aki73ix
    エラーが出る理由

    回答者拒否数で答えられないのでこちらにコメントです

    Excelで処理する場合同期通信にしないといけません
    この場合非同期通信を指定しているのでStatusが確定する前に
    処理してしまいエラーになるわけです
  • id:taknt
    Re:エラーが出る理由

    CSVの項目数が 256を超えている場合、エクセルでは 取り込めないでしょう。
  • id:P-mako
    Re(2):エラーが出る理由

    >CSVの項目数が 256を超えている場合
    もともとの要件もサンプルもそんなにヘビーなものではなく、
    たかだか4〜5カラムのものです。
    それより、aki73ix さんの同期/非同期通信の件、すごく
    興味深いです。
    デバッグで確認しても、サンプルのreadyState=4ですし、
    Status=200なので、通信上の問題ということはあるのかも
    知れません。

    回答者拒否の件、aki73ix さん申し訳ありません。
    5人以上に拒否されている方を拒否していたためかと
    思われます。(ちょっと厳しすぎたかも知れません)
    ※20人以上に変更しました。
  • id:andi
    Re:エラーが出る理由

    >Excelで処理する場合同期通信にしないといけません
    >この場合非同期通信を指定しているのでStatusが確定する前に
    >処理してしまいエラーになるわけです

    私自身、このあたり意識できていませんでした。>aki73ixさん
    申し訳ありません。>P-makoさん

  • id:P-mako
    Re(2):エラーが出る理由

    >私自身、このあたり意識できていませんでした。>aki73ixさん
    >申し訳ありません。>P-makoさん
    いえいえ。とんでもないです。
    andi さんのご回答で、ずいぶん先が見えたのはジジツですので。

    http://www.hatena.ne.jp/1131855304
    で再質問したところ、dllの参照設定も必要なことが
    わかりましたが、未だ解決してません(^^;
    同期/非同期の件なのかは、不明ですが、また何かご存知でしたら
    是非ご教授ください。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません