|
こんばんは。
>ExcelのVBAで下記内容のマクロを作成していましたが
>壁にぶち当たってしまったので質問させてください。
>
>動きとしては、あるWebページに移動して検索を行う動作をしたい。
>その前段階として、そのページには必ず手順を踏んで遷移しないと
>該当のWebページには進めないページになっている。
>
>IE.Navigate2で二回目に開いたページの"IE.Document.Links(0).Click"
>を行うと新規でIEが起動するようになっています。
>その新規で開いたIEを何とかVBA上で操作が行えるようにしたいのですが
>どうやって、innerHTMLを取得していいのかわからず壁にぶち当たっています。
IEのイベントを使用した方法です。
新規ブックにて試してください。
まず、この新規ブックに対して参照設定を行います。
VBEの「ツール」---「参照設定」にて
「Microsoft Internet Controls」にチェックを入れてください。
コードは、標準モジュールではなく、
Thisworkbookのモジュールに記述します。
'====================================
Option Explicit
Public WithEvents ie As InternetExplorer
Dim iex As InternetExplorer
Sub コマンド1_Click()
Dim ans, idx
Dim txt As String
Dim regex As Object
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate2 "http://www.vbalab.net/vbaqa/c-board.cgi?id=excel"
' ↑半角のhttpに直して実行すること
Do While ie.Busy = True Or ie.readyState <> 4
Loop
ie.document.Links(0).Click
Do While iex.Busy = True Or iex.readyState <> 4
Loop
ans = Split(iex.document.body.innerText, vbCrLf)
For idx = LBound(ans) To UBound(ans)
Cells(idx + 1, 1).Value = ans(idx)
Next
iex.Quit
ie.Quit
Set iex = Nothing
Set ie = Nothing
End Sub
'===============================================================
Private Sub ie_NewWindow2(ppDisp As Object, Cancel As Boolean)
Set iex = New InternetExplorer
Set ppDisp = iex
End Sub
コマンド1_Clickを実行してみてください。
「VBA質問箱基本ポリシー 」がシートに表示されます。
対象となるサイトがご自分の管理下のサイトなら、良いですが、
そうでない場合は、この手のコードはメンテが大変ですよ!!
最近は、公共的なサイトは定期的に内容を変えている場合もありますから・・・。
まっ、試してみてください。
|
|