- ベストアンサー
VBAでHPをエクセルシートへコピーしたい
現在、IEであるHPを表示し、IEですべて選択しコピー、 エクセルのシートへ貼り付けを行っております。 (ただ単にコピペし、レイアウトはエクセルにお任せです) この作業をVBAで自動化したいと思っております。 objIEを使ってやると思っているのですが、ソースを参照する方法等は探せましたが、ただ単にコピペする方法が分かりません。 このような事は、可能でしょうか? アドバイスをお願いします!
- みんなの回答 (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
お礼
作って頂いたプログラムで、希望通り動きました。 ExecWBを使えば、制御できるんですね。 ホント、VBAの世界は幅広いです。 本当に、ありがとうございました。