• ベストアンサー

VBAでHPをエクセルシートへコピーしたい

現在、IEであるHPを表示し、IEですべて選択しコピー、 エクセルのシートへ貼り付けを行っております。 (ただ単にコピペし、レイアウトはエクセルにお任せです) この作業をVBAで自動化したいと思っております。 objIEを使ってやると思っているのですが、ソースを参照する方法等は探せましたが、ただ単にコピペする方法が分かりません。 このような事は、可能でしょうか? アドバイスをお願いします!

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 作ってみました。当たり前のことですが、セレクトオールが効かないWeb ページは取れません。(c.f. google) >ただ単にコピペする方法が分かりません。 また、画像の少ないところに限りますね。比較的、Yahoo の為替情報は落ち着いています。 他に、注意点らしきものはないものの、なんとなく、Visual Basic Editor 画面を開けたままで、マクロを動かすのは拙いような気がします。必ず、閉じてください。Activesheet に貼り付けます。  Application.Wait Now() + TimeValue("00:00:05") なお、5秒がふさわしいかどうかは、分かりませんが、ある程度の時間を置かないと、バッファにたまらないことがあります。 貼り付けた後、Ctr+ Z で、貼り付けた画面は取り消しが効きます。 また、マクロの調子が悪いときは、VB Editor メニューからツール-参照設定 Microsoft Internet Controls のチェックを入れると楽になります。 また、言うまでもなく、 >objIEを使ってやると思っているのですが で、Document ソースから取り出すほうが確実です。 '------------------------------------------------------ Sub IE_Open_Copy()  Dim objIE As Object  Const OLECMDID_SELECTALL = 17  Const OLECMDID_COPY = 12  Const OLECMDEXECOPT_DODEFAULT = 0  '目的のWebページ  Const URL As String = "http://quote.yahoo.co.jp/m3?u"  Set objIE = CreateObject("InternetExplorer.Application")    With objIE   .Visible = True   .Navigate URL   Do While .Busy    DoEvents   Loop   Do Until .ReadyState = 4    DoEvents   Loop   .ExecWB OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT   .ExecWB OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT   Application.Wait Now() + TimeValue("00:00:05")   .Quit  End With  AppActivate Application.Caption, True  Range("A1").Select  Application.Wait Now() + TimeValue("00:00:05")  Application.SendKeys "^v"    Set objIE = Nothing End Sub

cbrdai
質問者

お礼

作って頂いたプログラムで、希望通り動きました。 ExecWBを使えば、制御できるんですね。 ホント、VBAの世界は幅広いです。 本当に、ありがとうございました。

関連するQ&A