• ベストアンサー

Excel VBAでWebクエリ更新

VBA初心者です。 Excel VBAで、Webクエリを更新させ、取得したデータを同じBook内の別のSheetに コピーさせたうえで、データのソート等を行いたいと考えています。 上記の操作をマクロで記録し、走らせてみると、Webクエリのデータ更新(取得)が 完了する前に、それ以降の操作に進んでしまいます。 Webクエリのデータ更新(取得)が完了してから、次の操作に進ませるためには、 どのようにすれば良いでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

WEBクエリを「更新する」マクロをキチンと書いていますね? (しばしば更新じゃなく「毎回WEBクエリをイチから埋め込み直す」マクロを書いてる初心者さんが多いので) で、通常は sub macro1()  activesheet.querytables(1).refresh backgroundquery:=false ’以下続きの作業  msgbox "DONE" end sub とかで十分です。 #シートにこれまでに何度も何度もWEBクエリを埋め込み直していて、収拾がつかない状態になっていないよう気を付けてください。まっさらのシートに一つWEBクエリを埋めた状態から作業してみて下さい。

borm-baye
質問者

お礼

keithinさん 遅ればせながら、回答ありがとうございます。 実は、上記回答を参考に、マクロの修正を行なって きましたが、なかなか思い通りの結果が得られず、 七転八倒の日々でした。 それが、本日やっと解決しました。 結果的には、WEBクエリをSheet内に数十個設定して いたため、その分の記述が必要だっただけのようです^^; おかげさまで、解決出来ました。 ありがとうございました。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! Webクエリを更新するまで少しマクロを止めてみてはどうでしょうか? 更新コードの次の行に >Application.Wait Now() + TimeValue("0:00:05") といったコードを追加してみます。 ※ 上記では5秒待つようにしていますが、時間は適宜調整してみてください。m(_ _)m

borm-baye
質問者

補足

こんにちは。 早速の回答ありがとうございます。 待ち時間を調整することで、対応できそうです。 わがままなお願いで恐縮ですが、もし可能であれば Webクエリの更新が『完了した』ことを確認し、 次のコードを走らせることは出来ませんか? 理由は、Webクエリの更新時間がその都度微妙に 違うためです。 もちろん、先ほどの待機時間を長めに設定すれば 問題ないとは思うのですが・・・ どうぞよろしくお願いします。

関連するQ&A