プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。
VBSで
Dim oIE
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Navigate("https://xxxx.jsp")

等でhpを自動的にクリックしたりして動かしています。

そのページ内にあるリンクをクリックすると、別ウィンドウで立ち上がるページがあるのですが、そのページを動かしたりする事は出来ますでしょうか。

よろしくお願いします。

A 回答 (3件)

[回答番号:No.1・2] の DOUGLAS_ です。


 試しに、私のテストしたコーディングを掲載しておきます。
 OKWave のトップページを開き、右上の宣伝をクリックして開いたページの最初のリンクをクリックするという作業です。


Option Explicit
Dim myShell, SWC, oIE
Set myShell = CreateObject("Shell.Application")
SWC = myShell.Windows.Count
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = True
oIE.Navigate ("http://okwave.jp/")
Do While oIE.Busy Or oIE.ReadyState <> 4
'WScript.Sleep 100
Loop
oIE.document.Links.Item(12).Click
WScript.Sleep 5000
myShell.Windows.Item(SWC + 1).document.Links.Item(1).Click
Set oIE = Nothing: Set myShell = Nothing
    • good
    • 2
この回答へのお礼

DOUGLAS_さん、サンプルまで用意して頂き、有難うございます。
お陰様で、解決する事ができました。

ほんと感謝です。
ありがとうございました。

お礼日時:2009/05/13 17:33

[回答番号:No.1] の DOUGLAS_ です。


>まだ新しいページが開ききっていないのかと思い、
>sleepを入れたりして待機させてみましたが、
>新しいページのdocumentが取得できませんでした。
 VBA でしたら
While oIE.Busy Or oIE.ReadyState <> 4: DoEvents: Wend
と書くところなのですが、WSH の場合
Do While oIE.busy Or oIE.Document.readyState <> "complete"
Loop
でしょうか?

 ご参考までに、下記の [質問者からのコメント] の
>妥協作ということで、下記のコードになりました。
以下をご覧ください。

●Navigate2 メソッドで開いた新しいタブをVBAで操作するには
http://www.kotaete-net.net/Default.aspx?pgid=14& …
    • good
    • 0

 予め、Shell.Application で Window の数を数えて(SWC)おいてから、


>別ウィンドウで立ち上がるページ
を Item(SWC + 1) とすれば、
oIE.document.~~~
と同様に、
myShell.Windows.Item(SWC + 1).document.~~~
というような記述で
>そのページを動かしたりする事は出来ます

'-------------------------------------------------------------------
Dim myShell, SWC, oIE
Set myShell = CreateObject("Shell.Application")
SWC = myShell.Windows.Count

Set oIE = CreateObject("InternetExplorer.Application")
oIE.Navigate("https://xxxx.jsp")
'そのページ内にあるリンクをクリックする
oIE.document.~~~.Click
'そのページを動かしたりする
myShell.Windows.Item(SWC + 1).document.~~~

この回答への補足

ご回答ありがとうございます。
このような方法があるのだなと勉強になります。

上記で出来そうでしたので、早速おこなってみたのですが、
myShell.Windows.Item(SWC + 1).document
でdocumentを取得しようとすると
"オブジェクトがありません。": 'myShell.Windows.Item(..)'
というエラーが出てしまいます。

まだ新しいページが開ききっていないのかと思い、sleepを入れたりして待機させてみましたが、新しいページのdocumentが取得できませんでした。

ただ、myShell.Windows.Count をリンクを開く前に取得し、
新しいページのリンクを開いた後に、myShell.Windows.Countを取得するときちんと +1されておりました。

また、+1 せずに myShell.Windows.Item(SWC).document
とすると、リンクを開く前の元のdocumentは取得する事が出来ましたので、方法はあっていると思うのですが。

なぜか新しいページが取得できないみたいです。
そのページが特殊だからでしょうか。社内サイトのページなのですが。。

上記のような情報で何か分かる事ありますでしょうか。
よろしくお願いします。

補足日時:2009/05/12 10:59
    • good
    • 1

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