重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

現在、IEであるHPを表示し、IEですべて選択しコピー、
エクセルのシートへ貼り付けを行っております。
(ただ単にコピペし、レイアウトはエクセルにお任せです)

この作業をVBAで自動化したいと思っております。
objIEを使ってやると思っているのですが、ソースを参照する方法等は探せましたが、ただ単にコピペする方法が分かりません。
このような事は、可能でしょうか?
アドバイスをお願いします!

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/01 18:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!