• 締切済み

WEBのデータをクエリ抽出したいのですが。

エクセルのマクロについてのご質問です。 エクセルのマクロ(クエリ抽出)にてWEB上のデータを取り出そうと思っております。 作成したマクロを動作させた結果、正常に動作するPCとマクロを動作させても、反応しないPCがあります。 (特にエラーは表示されませんが、データは抽出できていません) 実際のマクロを掲載したいのですが、企業情報が含まれる為掲載出来ないので申し訳ございませんが、同じマクロで正常に動作するPCと正常に動作しないPCがあると言うのは、PCの設定の問題でしょうか? または、マクロ自体に問題があるのでしょうか? PCの設定はマクロのセキュリティ等私がわかり範囲で、すべてのPCの設定をあわせたつもりですが、それでも正常動作するPCと正常に動作しないPCがあります。 初心者なので、質問の書き方に分かりにくい点等あるかとおもいますが、何か対策をご教授いただければありがたいです。 宜しくお願いいたします。

みんなの回答

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.2

情報ありがとうございます。 試していないのですが、恐らく .Refresh BackgroundQuery:=False の部分で「実行時エラー1004」あたりのエラーが出ているという のは、無いでしょうか? ちなみにサイトが見つからないとのことなので、 https://************************************="​ + a + "**=" + b + "**=" + c の箇所をString型の変数に値を入れてみて、 生成されたURLのアドレスを確認してみてください。 確認方法は、生成されたURLをどこかのセルに一時格納し、 IE等のブラウザでアクセスしてみればわかります。 (下記のような感じで) Dim url As String url = https://************************************="​ + a + "**=" + b + "**=" + c With Worksheets("どこにも使われていない適当なシート")  ' 生成されたURL(このURLをコピペして、ブラウザでアクセスしてみる)  .Range("A1") = url  ' URL生成に使われたaの内容を確認する  .Range("A2") = a  ' URL生成に使われたbの内容を確認する  .Range("A3") = b  ' URL生成に使われたcの内容を確認する  .Range("A4") = c End With できれば、正常に動作しないPCから、該当URLにブラウザでアクセス してみて、つながらないようであれば、ネットワークが、 httpsのサイトに接続できていない可能性があるので、 プログラム側の問題じゃないと思います。 (XPを使っているなら、ファイアウォールの設定でhttpsを 認めていないとか、そういう類じゃないかと) また、正常に動作しないPCから、該当URLにブラウザアクセスできる のにも関わらず、エラーが発生するようであれば、 On Error Resume Nextを解除した状態で、発生するエラー番号を 添えて、ご相談頂けたらと思います。

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

どのように動かないのでしょうか? 例えば反応がないとか、Excelがハングアップするとか、エラーが出るとか・・・ もしエラーが出るようであれば、そのエラー内容を教えて下さい。 またコードの公開はできないということですが、 非公開部分を改変した形でも構いませんので、ある程度は どんなマクロを組んでいるのか情報が欲しいところです。 よろしくお願いします。

daikichi-7
質問者

補足

kero_mioさん 早速のご回答大変ありがとうございます。 マクロを動かしても反応が無くエラー表示も出なかったのは、「On Error Resume Next」を入れていたからだと思います。 「On Error Resume Next」を外すと「サイトに接続できません」というエラーが出ます。 調べたところ、エクセル2002ではHttpsのサイトは接続できない可能性があるとの事でした。 ちなみに私はエクセル2000で使用しております。 念のため、マクロのサンプルを掲載いたします。 間違っている箇所等ございましたら、ご教授いただきたく思います。 宜しくお願いいたします。 Sub sample() On Error Resume Next Dim a As String, b As String, c As String With Worksheets("シートA") a = .Range("B1") '商品番号 b = .Range("B2") '在庫 c = .Range("B3") '価格 End With With Worksheets("シートB") .Cells.Clear '商品情報をクエリ抽出 With .QueryTables.Add(Connection:= _ "url;https://************************************=" + a + "**=" + b + "**=" + c, _ Destination:=Worksheets("シートB").Range("A1")) .WebSelectionType = xlSpecifiedTables .WebFormatting = xlWebFormattingNone .WebTables = "7" .Refresh BackgroundQuery:=False End With End With End Sub

関連するQ&A

専門家に質問してみよう