• 締切済み

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

  • パラメータークエリの抽出ができません

    アクセスで、抽出条件に「>=[いつから] And <=[いつまで]」と日付の範囲指定をしてデータを抽出するクエリを作りましたが、表示されるパラメータに日付を入力して実行してもすべてのデータが表示されてしまいます。 どうしてでしょうか?

  • accessで対象データの抽出を行うクエリを作成しています。データ範囲

    accessで対象データの抽出を行うクエリを作成しています。データ範囲 0~1000 等で抽出したいのですが、元のデータは、 01 、 854、 0854 、0001 等、まちまちであり、 between 0 and 1000で指定すると、01 や 854 が抽出されません。 どのようにしたらよいでしょうか?  あるいは元のデータの桁を4桁にあわせればよいと思うのですが、どのようにして4桁に合わせればよいのでしょうか?  よい方法を教えていただきたいです。

  • 不一致クエリで異なるデータ抽出

    アクセスのテーブル「T_契約今月」とテーブル「T_契約先月」を 比べて、価格の違うものを抽出しようと思っています。 不一致クエリで「先月は契約があって今月は無いもの」と 「今月は契約があって先月は無いもの」は抽出する事が出来ました。 (NULLで設定) しかし、どちらにもデータがあって価格だけが違うものを抽出 出来るようにしたいのですが、不一致クエリの設定の仕方が 分かりませんでした。 どのように設定すればいいか教えて頂けないでしょうか? ちなみにテーブルの構成は、以下のフィールドで構成されて います。 「顧客ID」 「契約商品」 「価格」 「契約開始」 「契約終了」 テーブル「T_契約先月」は先月分の確定分の契約データが 入っています。 テーブル「T_契約今月」には、管理中の今月のデータが入って います。 どうかご教授願います。

  • エクセルのWEBクエリ

    エクセルのWEBクエリを使って株の時系列データを取得しています。マクロで多銘柄(500銘柄くらい)を取得しているため、「データ取得中」「応答なし」で固まってしまいます。 この問題を回避したいのですが、どなたか教えてください。

  • Excel webクエリ データ抽出に時間がかかる

    エクセルのwebクエリを使ってヤフーファイナンスよりデータをダウンロードしたいと考えています。 ネットで調べて以下のようなマクロを組みましたが、実行してから完了するまで1秒ほどかかります。 Sub データ抽出() With Worksheets("test") With .QueryTables.Add(Connection:="URL;http://stocks.finance.yahoo.co.jp/stocks/history/?code=1301.T", Destination:=Range("$A$1")) .WebSelectionType = xlSpecifiedTables .WebTables = "2" .Refresh BackgroundQuery:=False .Parent.Names(.Name).Delete .Delete End With End With End Sub 上のものは【1301】(株)極洋のものですが、これを全銘柄で実行したいのですが、時間がかかりすぎます。 みなさんもそのくらいのスピードで行っているのでしょうか。 改善するところがあれば教えていただきたいです。 OSはwindows7, Excelは2010です。 宜しくお願いします。

  • ACCESS 追加クエリーについて

    プログラム又はマクロにおいて追加クエリーを実行した時、抽出した全てのデータが追加されない時が見受けられるのですが、原因をご存知の方は教えてもらえませんか?尚、クエリーを単独で実行した時は正常に抽出、追加できることは言うまでもありません。

  • AccessのクエリとExcelの外部データの取り込み機能について

    AccessのクエリとExcelの外部データの取り込み機能について 質問させてください。 Access初心者です。 クエリの抽出条件でnot likeを使うと Accessで実行したときには正常に動作するんですが、 Excelの外部データの取り込みのAccessデータベースを選択してExcelへ出力すると 正常に出力されません。 具体例ですが、 ---------------------------------- 住所フィールドには東京都の自治体の名前 個人フィールドには担当者の名前 ---------------------------------- が入ってるとします。 クエリの抽出条件は以下のような感じです。 ---------------------------------- 個人フィールド,住所フィールド 鈴木,not like "*八王子市*" 斉藤, 田中, ---------------------------------- そうするとAccessのクエリの実行結果では 鈴木さんの八王子市を抜いたデータ 斉藤さんの全データ 田中さんの全データ が出力されると思います。 しかし、Excelの外部データ取り込みを使うと 鈴木さんの全データ 斉藤さんの全データ 田中さんの全データ が出力されてしまいます。 どうすれば正常出力できるのでしょうか? Accessからコピー&ペーストしてExcelに貼り付けるしかないのでしょうか? (参考) ・使っているOfficeは2007SP2です。

  • クエリ抽出条件の設定

    今MS Accessを使ったシステムで会社の各地域毎に名簿を管理しています。 今はフォームの各地域のボタンを押すとその地域をApplyFilterを使って抽出条件としてフォームに送り名簿を表示しています。 これまではそのフォームデータをエクセルに出力して編集するためにOutputTo acOutputFormを使ってフォームデータをエクセルに出力していました。 このエクセルに出力する時にエクセルテンプレートにこのデータを出力するように変更したいと思っています。 フォームデータをテンプレートに出力する方法が現在見つかっていないのでクエリに条件をかけてテンプレートに出力使用と思います。 クエリの抽出条件の設定をApplyFilterのようにボタンを押すだけで設定できるようにするにはどのような方法がありますか? また、行おうとしている方法が無理な場合別の方法はあるのでしょうか? 説明が不十分な部分があるかとは思いますが随時補足を入れていきたいと思うのでご回答よろしくお願いします。

  • Access クエリのデータ型について

    AccessでPablic変数を日付範囲指定、クエリの抽出条件に指定したのですが、「抽出条件でデータ型が一致しません。」とのエラーメッセージで抽出出来ません。 【処理フロー】 1.フォームで、開始日と終了日をPublic変数へ格納 2.データ抽出クエリの日付条件に"GetData()"Public Functin VBAで変数を格納した値をクエリの抽出条件に返す。 《変数》 '開始日の宣言 Public sDate As Date '終了日の宣言 Public eDate As Date 《GetData()》 Public Function GetDate() MsgBox "開始日は、" & sDate & vbCrLf & "終了日は、" & eDate GetDate = ">=#" & sDate & "# And <=#" & eDate & "#" MsgBox ("Where文は、" & GetDate) End Function デバッグの為、"GetDate()"の戻り値を、メッセージボックスで表示してますが、戻り値は正常とおもわれますが、「抽出条件でデータ型が一致しません。」でクエリが実行できません。 ここを参考に、上記仕様にしました。 http://www.tsware.jp/tips/tips_369.htm どうすれば、日付範囲をPablic変数から指定出来るか、お教え頂けましたら幸いです。 ちなみに、Pablic変数にしているのは、他のクエリでもこの日付範囲を使いたい為です。 もし、ほかに良い処理方法が有れば、ご教授ください。

  • Accessからデータを抽出

    Accessデータの中から必要な部分だけをExcelに移そうとしているのですが、うまくいかなかったので、ご指導いただけませんでしょうか? 「クエリウィザード-データの抽出」の画面で、「抽出する列」を選択して、「=」を選択したのですが、その右のプルダウンに何も表示されません。データは入力しているのですが・・・。 Accessもあまり使用したことがないので、どこに問題があるかわかりません。 説明が下手で申し訳ございませんが、よろしくお願い致します。