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

このQ&Aのポイント
  • VBSで作成したスクリプトで、IEウィンドウをアクティブにすることができない問題が発生しています。
  • Win10+IE11を使用しており、スクリプト自体はエラーなく完了するものの、ウィンドウをアクティブにすることができません。
  • VBSでIEウィンドウをアクティブにする方法についてアドバイスをいただきたいです。
回答を見る
  • ベストアンサー

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 -------------------------------------------------------------------------------

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>Win10 + IE11 環境ではそもそも Win7(64bit) IE11では動きましたが Option Explicit Dim objIE, objShell, objWshShell, objWin Dim linknum, spurl linknum = Inputbox("リンク番号を入力してください。") spurl="https://xxxx" & linknum 'Shell.Applicationオブジェクトの作成 Set objShell = Wscript.CreateObject("Shell.Application") '既に起動しているIEを検索 Set objIE = Nothing For Each objWin In objShell.Windows If TypeName(objWin.document) = "HTMLDocument" Then '見つかればobjIEオブジェクトに格納 Set objIE = objWin Exit For End If Next If objIE is NothIng Then '起動しているIEが無ければ新たに作成 Set objIE = Wscript.CreateObject("InternetExplorer.Application") With objIE .Visible = True .Navigate spurl End With Else 'IEが起動しておれば最終タブを取得 objIE.Navigate2 spurl, &H800 WScript.sleep 250 Set objIE = objShell.Windows.Item(objShell.Windows.Count - 1) Do While objIE.Busy = True Or objIE.readyState <> 4 WScript.Sleep 250 Loop Set objWshShell= Wscript.CreateObject("Wscript.Shell") objWshShell.AppActivate objIE WScript.Sleep 1000 objWshShell.SendKeys "%( )" WScript.Sleep 250 objWshShell.SendKeys "x" End If

yamadadennki
質問者

お礼

書き込みありがとうございます! IE ウィンドウがすぐ後ろにある状態で Inputbox を表示して入力すると、ウィンドウがアクティブになりました。 ありがとうございました。今後ともよろしくお願いします。

その他の回答 (1)

回答No.1

VBSって良く知らないんですが、 objIE.FullScreen = True これってエラーになりませんか? Windows10で動くかどうかわかりませんが、 過去に同じ質問見つけましたので、貼っておきますね。 http://qa.itmedia.co.jp/qa6267343.html

yamadadennki
質問者

補足

ありがとうございます。貼ってくださった質問は見ておりました。 そのため、AppActive のコードを入れたのですが、期待する動作にならなくて。。。 また、質問本文で記載している通り、コード実行時にエラーメッセージは表示されないです。。。 引き続き、何かありましたらよろしくお願いいたします。

関連するQ&A

  • VBS(WSH)で開いたIEのウィンドウがアクティブにならない

    VBSでタイトルバーのみのIEウィンドウを開き、 SendKeyでtestと入力するスクリプトを作成しています。 ですが、開いたIEのウィンドウがアクティブにならず、 SendKeyがIEに送信されません。 VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが 環境の問題なのか、プログラムの問題なのか判断できません。 どなたかご教授をお願いします。 IEのバージョンは8、OSはWinXPです。 以下、ソースです。 -------------------------------------------------- 'タイトルバーのみのIEを起動する Set WshShell = WScript.CreateObject("WScript.Shell") Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.Navigate("http://www.google.co.jp/") objIE.MenuBar = False objIE.StatusBar = False objIE.ToolBar = False objIE.AddressBar = False objIE.Visible = True '表示待ちループ Do While objIE.Busy WScript.Sleep 100 Loop '[test]で検索 WshShell.SendKeys("test") WScript.Sleep(100) WshShell.SendKeys("{TAB}") WScript.Sleep(100) WshShell.SendKeys("{ENTER}") --------------------------------------------------

  • インターネットで調べて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/" ======================= よろしくお願いいたします。

  • 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 この部分が例えば「オークション」でなくとも「オークショ」のように アンカーテキストリンクの一部が同じだったら、いけるようにしたいのですが、 どうしたらよろしいでしょうか? 「オークション」 だったら 「オークショ*」 や 「*クション」 とかでもいけるのかなーとおもってたんですが、 全然わからないんです。 どうかよろしくお願い致します。

  • VBScriptで、既に開いているIEを画面の最前面に表示させる

    VBScriptで、既に開いているIEを画面の最前面に表示させる OS:WindowsXP SP3 ブラウザ:InternetExplorer6 期待している機能としましては、IEが開いていない場合は新規にIEを立ち上げ、既に開いている場合は、それを画面の最前面に表示させる(最小化されている場合はそれを解除する)といった感じです。 教えて頂きたいのは、IEを画面の最前面に表示させる方法(最小化の場合はそれを解除)です。 現状のソースを記載します。おかしな点がありましたらご指摘よろしくお願い致します。 Dim objShell Dim objWindow Dim objIE Dim ieFlag ieFlag = False '開いているウィンドウからIEを検索 Set objShell = CreateObject("Shell.Application") For Each objWindow In objShell.Windows If TypeName(objWindow.Document) = "HTMLDocument" Then ieFlag = True Set objIE = objWindow Exit For End If Next 'IEが開いていたらそれを画面の最前面に、そうでないなら新規で開く If ieFlag = True Then 'IEを画面の最前面に又は、最小化解除 Else '新規にIEを開く Set WshShell=Wscript.CreateObject("Wscript.Shell") WshShell.Run("http://www.google.co.jp/") WScript.Sleep(4000) End If

  • VBAでIE操作をするサンプル

    VBAでIE操作をするサンプルをネットでいくつか見ているのですが Sub Sample1() Dim objShell As Object Dim objIE As New InternetExplorer Set objShell = CreateObject("Shell.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing Set objShell = Nothing End Sub Sub Sample2() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub ではどちらを使った方がいいのでしょうか? 圧倒的にSample2の方がネットでは多いのですが Sample1のやり方もあることを知りました。 Sample1の方法でブラウザを開くメリットはあるのでしょうか?

  • vbsよりIEをアクティブに開きたい

    お世話になります。 Windows7Pro サーバー上にあるhtmlファイルをvbsより開いてます。 また、5秒で閉じるようにしてます。 現状、vbsを実行するとhtmlファイルが開くことは開くの ですが、他ウィンドウの後ろになってしまいます。 どこをどうすれば開いたhtmlファイル(IE)を最前面で起動 することができますでしょうか。 【vbsの内容】 Option Explicit On Error Resume Next Dim strUrl ' 表示するページ Dim objIE ' IE オブジェクト strUrl = "サーバー上にあるhtmlファイルのパス" Set objIE = WScript.CreateObject("InternetExplorer.Application") objIE.ToolBar = False If Err.Number = 0 Then objIE.Navigate strUrl objIE.Visible = True objIE.Width = 800 objIE.Height = 400 objIE.Top = 0 objIE.Left = 480 WScript.Sleep 5 * 1000 objIE.Quit Else WScript.Echo "エラー:" & Err.Description End If 【htmlの内容】 <html> <head> <title>テスト</title> </head> <BODY> <IMG src="画像のパス"> <font size="7">TEST</font> </div> </body> </html> ご教示の程、宜しくお願い致します。

  • VbscriptでIEのコントロール

    以下の2つのサイトを参考にIEの自動処理を作っています。 「IE 画面を、スクリプトで操作する (パソコン便利ツール集)」 http://makoto-watanabe.main.jp/htmlDOM.html 「WSH JScriptを使いこなそう ~キーボード操作~」 http://3rd.geocities.jp/kaito_extra/Source/KeybordCtrl.html そこで簡単なhtmlページを作り、javascriptの「confirm」を使って確認メッセージを表示しました。 この確認メッセージの「OK」か「キャンセル」をVbscriptの「SendKeys」を使ってコントロールしようとしてるのですが全く反応しません。 何がいけないのでしょうか? もちろん確認メッセージはアクティブの状態です。 開いたIEのオブジェクトなどでコントロールしないといけないのでしょうか? ちなみに、html内のjavascriptは次のようにしています。 <script Language="JavaScript"> <!-- confirm("よろしいですか?") //--> </script> Vbscriptは次の通りです。 Set objWshShell = Wscript.CreateObject("Wscript.Shell") Set objIE = CreateObject("InternetExplorer.Application")'IEの起動 objIE.Visible = True 'IEウィンドウを表示 siteurl = "http://テスト用のサイト/test.html" objIE.Navigate2 siteurl'指定ページを開く While objIE.ReadyState <> 4 Or objIE.Busy = True WScript.Sleep 1000 Wend objWshShell.SendKeys("{enter}") objIE.Quit Set objIE = Nothing WScript.quit

  • VBSを利用して、IEのタブを自動的に切り替え

    VBSを利用して、IEのタブを自動的に切り替え続けるスクリプトを作成しています。 以下現状 手動でやる事 ・作成したVBSファイルをダブルクリックして起動 ・IEは常に画面の全面(アクティブウィンドウ)にしておく VBSファイルの中身 set W = WScript.CreateObject("WScript.Shell") do WScript.sleep 30000 W.Sendkeys "^{TAB}" loop これでも正常に動くのですが、 ここにESCキーを押す事でプロセスを終了させるスクリプトを追記したいのですが、どのようにしたらよいでしょうか。 ご教授お願いします。

  • VBSのSendKeysでクリックができない

    音声認識アプリケーションからvbsを実行できるのですが、ここで一度だけマウスクリックしたい状況が出てきて困っています。 Dim WSHShell As Object Set WSHShell = CreateObject("Wscript.Shell") WSHShell.AppActivate "操作したいアプリケーション名" WSHShell.SendKeys "{TAB}" 'OK WSHShell.SendKeys "{ENTER}" 'OK WSHShell.SendKeys "{CLICK LEFT, 10, 10}" 'NG TABキーやENTERキーは動作するのですが、3番目のマウスクリックがExceptionといわれエラーになってしまいます。Sendkeysでマウスクリックを送信するにはどうしたらよいのでしょうか?ネットで調べたリファレンスだと上記のような書き方で良さそうなのですが・・・ 音声認識アプリケーションはドラゴンスピーチ11Jで、OSはWin 7 ProとWin 8、どちらも64ビットです。

  • VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法

    VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法を教えてください。 現在、下のような方法で行っているのですが応用が利かないので改善したいと思っています。 Set IE = CreateObject("InternetExplorer.Application") Set WshShell = CreateObject("WScript.Shell") IE.Visible = True IE.Navigate("https://サイトのURL") Do Until IE.Busy = False WScript.Sleep 1000 WshShell.SendKeys "y" Loop '(セキュリティの警告が出るため) WScript.Sleep 100 WshShell.SendKeys "{TAB}" WScript.Sleep 100 WshShell.SendKeys "loginid" WScript.Sleep 100 WshShell.SendKeys "{TAB}" WScript.Sleep 100 WshShell.SendKeys "password" WScript.Sleep 100 WshShell.SendKeys "{TAB}" WshShell.SendKeys "{ENTER}" 操作したいページのソースの一部を抜粋すると下記のようになっています。 テキストボックス <INPUT type="text" name="loginId" class="Necessary" size="20" maxlength="5" value="" tabindex="20"> ボタン <INPUT class="button10" type="button" name="sentaku" value="認証" onClick="javascript:execute・・・・略 うまく操作できる方法を教えてください。 よろしくお願いします。

専門家に質問してみよう