• ベストアンサー

vbsで開かれた別ウィンドウを制御したい。

いつもお世話になっております。 VBSで Dim oIE Set oIE = CreateObject("InternetExplorer.Application") oIE.Navigate("https://xxxx.jsp") 等でhpを自動的にクリックしたりして動かしています。 そのページ内にあるリンクをクリックすると、別ウィンドウで立ち上がるページがあるのですが、そのページを動かしたりする事は出来ますでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.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

take_july
質問者

お礼

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

その他の回答 (2)

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.2

[回答番号: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&qid=6028449630

  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.1

 予め、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.~~~

take_july
質問者

補足

ご回答ありがとうございます。 このような方法があるのだなと勉強になります。 上記で出来そうでしたので、早速おこなってみたのですが、 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は取得する事が出来ましたので、方法はあっていると思うのですが。 なぜか新しいページが取得できないみたいです。 そのページが特殊だからでしょうか。社内サイトのページなのですが。。 上記のような情報で何か分かる事ありますでしょうか。 よろしくお願いします。

関連するQ&A

  • インターネットで調べてVBSで下のようなものを作ってみました。

    インターネットで調べてVBSで下のようなものを作ってみました。 やりたいことは、IEを起動して複数のサイトを複数のタブで表示 したいのですが、サイトの種類分IEも起動してしまいます。 考えているようなことはできないのでしょうか。 ========ここから下です======== Option Explicit Dim objIE Dim objShell 'Shell.Application Set objShell = CreateObject("Shell.Application") Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.okwave.jp/" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.google.co.jp/" Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.yahoo.co.jp/" ======================= よろしくお願いいたします。

  • ログイン、パスワードをセットしておきたい。

    IEの決められたサイトをよびだし、ログイン、パスワードを自動で固定の文字をセットするVBスクリプトを作成したい。 画面は下記で出ることはわかったのですが宜しくお願いします。 (尚、ツール=>インターネットオプションは対象外です) Set oIE = CreateObject("InternetExplorer.Application") oIE.Visible = True oIE.Navigate "http://wwwX.XXXXXXXX.com/XXXX/" '*** ページがロードされるまで待つ Do While oIE.busy WScript.Sleep(1000) Loop

  • vbsでホームページ表示について

    vbsファイル ・Dim objIE ・Set objIE = CreateObject("InternetExplorer.Application") ・objIE.Visible = True ・objIE.Navigate2 "http://***.***1/" ・objIE.Navigate2 "http://***.***2/", &H1000 ・objIE.Navigate2 "http://***.***3/", &H1000 ・Set objIE = Nothing この中で「, &H1000」を a=", &H1000" objIE.Navigate2 "http://***.***3/" & a とすると正常に表示できません。 変数??に代入するにはどうすればいいのでしょうか。 アドバイス、よろしくお願いします。

  • VBSのNavigateコマンドについて

    VBSのNavigate の URL指定の中に inputboxで 変数を代入したいのですがうまくいきません お分かりの方 教えていただければ幸いです。 Dim Input Input = InputBox("~~~~") Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate "https://xxx Input xx" ← この中のURLに挿入したい。 末筆ですみませんがよろしくお願いします。

  • VBSでobjLINK.InnerTextの一部だ

    VBSでリンクをクリックしたいのですが、 某所からコピペしたVBSのスクリプトです。 これを実行すると、たしかに YAHOOのオークションに行きます。 ============================== Option Explicit Dim objIE Dim objShell Dim strBody Dim objLINK 'Shell.Application オブジェクトの作成 Set objShell = CreateObject("Shell.Application") 'IE を起動して Yahoo のトップページを開く Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2 "http://www.yahoo.co.jp/" 'Yahoo のページが起動する 'ページの読み込みが終わるまで待機する Do Until objIE.Busy = False '空ループだと無駄にCPUを使うので250ミリ秒のインターバルを置く WScript.sleep(250) Loop ' Yahoo トップページのオークションのリンクをクリックする For Each objLINK In objIE.Document.Links If objLINK.InnerText = "オークション" Then objLINK.Click Exit For End If Next ============================ 質問させていただきたいのは If objLINK.InnerText = "オークション" Then この部分が例えば「オークション」でなくとも「オークショ」のように アンカーテキストリンクの一部が同じだったら、いけるようにしたいのですが、 どうしたらよろしいでしょうか? 「オークション」 だったら 「オークショ*」 や 「*クション」 とかでもいけるのかなーとおもってたんですが、 全然わからないんです。 どうかよろしくお願い致します。

  • vbsでフォーム入力ができません

    set oIE=Wscript.CreateObject("InternetExplorer.application") oIE.navigate2("http://xxxyyy/index.html") oIE.visible=true Do Until oIE.Busy = False WScript.sleep(250) Loop oIE.document.sf1.name.value="山田太郎" oIE.document.sf1.email.value="abc@xxx.co.jp" oIE.document.sf1.subject.value="人材募集" oIE.document.sf1.submit() 7行目のoIE.document.sf1.name.value="山田太郎"でエラーになってしまいます。”オブジェクトでサポートされていないプロパティまたはメソッドです”とエラーメッセージがでます。vbsは殆どわかりませんのでわかる方いましたらお願いします。

  • Excel の VBA で、IEのWeb操作

    ExcelのVBAで、A1~A10 のセルに入っている数値を下記 URL の「お問い合せ番号」の入力欄に自動でセットして、「検索」のボタンを押したいのですが、方法が分かりません。 http://www2.fukutsu.co.jp/inq/INQJJ120.html 下記のプログラムで表示までは出来るのですが、それから先の入力とボタンクリックの方法が分かりません。 何かアドバイスを頂けると幸いです。 > Dim oIE As Object > > 'IE起動 > Set oIE = CreateObject("InternetExplorer.Application") > oIE.Visible = True > > '目的のURLへ > oIE.Navigate "http://www2.fukutsu.co.jp/inq/INQJJ120.html" > > '完全表示まで待つ > While oIE.Busy: Wend > While oIE.document.readyState <> "complete": Wend

  • VBscriptからIE11起動

    windows7(x64) IE11 IEを起動するスクリプトを.vbs作成しました。 vbsファイルをダブルクリックすると、↓エラーが発生するときがあります。 「 WScript.CreateObject: "InternetExplorer.Application" というオブジェクトを作成 できませんでした。」 ↓SRCです。 Dim IE Set IE = WScript.CreateObject("InternetExplorer.Application", "Event_") IE.Visible = True IE.Navigate ("http://www.yahoo.co.jp") set IE = nothing 数秒待ったり、vbsを連打すると起動します。 プロパティ(vbs右クリック)のスクリプトタブで実行時間を10秒にしてみても起動できないことがあります。 オブジェクトを作成しない方法はありますか? また、失敗している原因はなんでしょう?

  • 複数のタブを開きたい IE

    IE9を使っています。 画像のようにタブを二つ開くにはどうすればいいでしょうか? Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub だと一つのタブしか開けません。 Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate2 "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても1つのタブしか開けないです。 ご回答よろしくお願いします。

  • VBS で IE ウィンドウがアクティブにならない

    Inputbox で URL 文字列の一部を打ち込むと、IE オブジェクトがある場合には新規タブを作成し、当該サイトへアクセスするスクリプトを作っています。 後述がサンプルです。 スクリプトの最後にウィンドウをアクティブにするコードを入れているのですが、スクリプト自体はエラーなく完了するものの、IE ウィンドウをアクティブにすることができません。 Win10+IE11 を使っているのですが、何かコードが足りなかったりするのでしょうか。。。 それとも、Win10 + IE11 環境ではそもそも VBS で IE ウィンドウをアクティブにすることはできないのでしょうか。。。 アドバイスを下さると幸いです。 よろしくお願いいたします。 -------------------------------------------------------------------- Dim linknum dim objIE dim spurl linknum=Inputbox("リンク番号を入力してください。") spurl="https://xxxx" & linknum 'Shell.Applicationオブジェクトの作成 Set objShell = CreateObject("Shell.Application") 'IEウィンドウの個数をカウント lngCount = 0 For Each objWindow In objShell.Windows lngCount = lngCount + 1 Next With objShell.Windows 'IE オブジェクトがないときは、新しく作成する If lngCount = 0 Then .Item.Navigate2 spurl lngCount = lngCount + 1 objIE.FullScreen = True objIE.Visible = True 'IE オブジェクトがあるときは、タブを操作する(新しいタブを作成) Else .Item(lngCount - 1).Navigate2 spurl,&H800 IE ウィンドウをアクティブにする Set WshShell=Wscript.CreateObject("Wscript.Shell") WshShell.AppActivate "ページタイトル" WshShell.SendKeys "%( )" WshShell.SendKeys "R" End If End With -------------------------------------------------------------------------------

専門家に質問してみよう