• 締切済み

VBSを使用して、ブラウザにて表示されたメッセージボックスを消す方法

VBSでブラウザを立ち上げ、IDとPWを入力しボタンをクリックするまではスクリプトを使って出来たのですが、ボタンを押した後にメッセージボックスが出てきてしまい、どうしてもそこで止まってしまいます。 ---- Set objWshShell = Wscript.CreateObject("Wscript.Shell") objWshShell.Sleep(1000) objWshShell.SendKeys("{ENTER}") ---- なども使ってみたのですが、うんともすんとも言わない・・・ Web上を探し回ったのですが全く見つからず、回答はほとんどが無理というものばかりで、本当に解決する方法は無いのでしょうか? 基本同じと思いますがVBAで解決ができるのであれば、そちらでもOKなのですが・・・

みんなの回答

  • korin_
  • ベストアンサー率69% (46/66)
回答No.3

起動したIEがアクティブにならない場合があるようなので、 APIを使用して起動したIEをアクティブにするようにしました。 VBAで下記を試してもらえますか? Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Sub test() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Width = 800 objIE.Height = 600 objIE.Left = 0 objIE.Top = 0 objIE.StatusBar = False objIE.Toolbar = False objIE.Visible = True objIE.Navigate "HPのアドレス" Do Until objIE.Busy = False Sleep (250) Loop objIE.StatusBar = True objIE.Toolbar = True 'ID欄を設定 objIE.Document.frm.ID.Value = "******" 'Pass欄を設定 objIE.Document.frm.Pass.Value = "++++++" 'ボタンを押す objIE.Document.frm.btn.Click ' ウィンドウをアクティブに設定 Dim wResult As Long wResult = SetForegroundWindow(objIE.hWnd) Dim objWshShell As Object Set objWshShell = CreateObject("Wscript.Shell") Sleep (5000) objWshShell.SendKeys ("{ENTER}") ' ページの読み込みが終わるまで待機 Do Until objIE.Busy = False Sleep (250) Loop End Sub

HiroQual
質問者

お礼

上記の内容をVBAにて確認したのですが、VBSと同様の結果になりました。 薄々感じてはいましたが、やはりVBではMSGBOXを操作することは出来ないのでしょうかね。 そろそろ諦めようかと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • korin_
  • ベストアンサー率69% (46/66)
回答No.2

> 上記の方法ではできませんでした。 Enterを送信したいのであれば上記の方法で出来るはずです。 出来ない理由としては、IEがActiveになっていないか、Msgboxが表示される前にEnterを送信してしまっているぐらいしか考えられません。 実際のコードを提示してもらえれば、何か原因がわかるかもしれません。 > その他、方法はございますでしょうか? 外部のインスタンスなので、VBScriptでは無理だと思います。 VBAで、APIを使用してMsgboxを監視するプログラムを作成するぐらいしかないと思います。

HiroQual
質問者

補足

下記のようにプログラムを組みました。 ---- Option Explicit Dim objIE Dim objWshShell Set objIE = CreateObject("InternetExplorer.Application") Set objWshShell = Wscript.CreateObject("Wscript.Shell") 'Set objWshShell = WScript.CreateObject("WScript.Shell") objIE.Width = 800 objIE.Height = 600 objIE.Left = 0 objIE.Top = 0 objIE.Statusbar = False objIE.ToolBar = False objIE.Visible = True objIE.Navigate "HPのアドレス" Do Until objIE.Busy = False WScript.sleep(250) Loop objIE.Statusbar = True objIE.ToolBar = True 'ID欄を設定 objIE.Document.frm.ID.value ="******" 'Pass欄を設定 objIE.Document.frm.Pass.value ="++++++" 'ボタンを押す objIE.Document.frm.btn.Click 'ここまではうまくいくのですが、クリック後にMSGBOXが表示される。 'ENTERを押すようにSendKeysを使用しても実行されません。 objWshShell.Sleep(5000) objWshShell.SendKeys("{ENTER}") '下記の内容はMSGBOXを閉じブラウザを閉じた後にエラーとして表示されます。 '待ち状態が続いている状態なのだがブラウザが起動しなかったことにより表示されたのかもしれません。 Do Until objIE.Busy = False WScript.Sleep(250) Loop 'オブジェクトの破棄 Set objIE = Nothing ----- 差しさわりが無ければVBAにてAPIを使用する方法などを教えていただけますでしょうか? お手数をお掛けいたします。

全文を見る
すると、全ての回答が全文表示されます。
  • korin_
  • ベストアンサー率69% (46/66)
回答No.1

以下のコード(vbs)で試しに実行してみたところ、メッセージが表示されないようになりました。 SendKeysをする前にmsgboxが表示されるまでSleepで待機しないと、上手くいかないです。 こういう事ではないですか? Dim objIE Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '指定したURLを表示する objIE.Navigate "https://okauth.okwave.jp/mypage_qa.php3?list=answer" dim objWshShell Set objWshShell = Wscript.CreateObject("Wscript.Shell") WScript.Sleep(5000) objWshShell.SendKeys("{ENTER}") 'ページの読み込みが終わるまで待機 Do Until objIE.Busy = False WScript.Sleep(250) Loop

HiroQual
質問者

お礼

ご返答ありがとうございます。 上記の様にURLの表示し、IDを入力し、PWを入力し、ブラウザ内のLOGINボタンまでは押すことはできます。 LOGINボタンを押した後に、MSGBOX(yesno)が表示され、そのときにYESボタンクリック or ENTERキーを入力したいのです上記の方法ではできませんでした。 その他、方法はございますでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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・・・・略 うまく操作できる方法を教えてください。 よろしくお願いします。

  • VBSで2バイト文字の送り方の質問です。

    VBSで質問です。環境はXP Proです。 InputBoxで入力した日本語を他のアプリケーションに入力をしたいのですが、Sendkeysが2バイト文字は不可とわかり頓挫しました。sendkeys以外で使える技を教えてくださいませ。下記のコードを考えてましたが挫折しました。 -------------------------------------------------- Option Explicit Dim Name Name = InputBox("名前を入力してください") 'シェルを用意 Dim objWshShell Set objWshShell = Wscript.CreateObject("Wscript.Shell") 'notepad起動 objWshShell.Exec "notepad.exe" 'notepadアクティブにする objWshShell.AppActivate "objWshShell.Exec.ProcessID" wscript.sleep 1000 'notepadに名前を入力する objWshShell.Sendkeys Name ***sendkeys以外で文字を送る技を期待しています。

  • 実行中のSendkeysのVBSを途中で停止したい

    下記のような実行中のSendkeysのVBSを途中で 停止するにはどうすればよいのでしょうか? Set s = WScript.CreateObject("WScript.Shell") for i=1 to 100 s.SendKeys i WScript.Sleep 500 next ご存知の方がおられましたらご回答をよろしくお願いします。

  • vbsでexcelのクリアとフォームの表示をしたい

    お世話になっております。 vbsの以下の記述でexcelを開いています。 開くところまでは行くのですが、その後のsheet1のデータのクリアとUserForm1の表示がどうしてもできません。 申し訳ありませんが、どなたかおわかりの方、教えていただけないでしょうか。 宜しくお願いいたします。 Dim oApp Dim objWshShell Dim scriptPath 'Excelオブジェト作成 Set oApp = CreateObject("Excel.Application") 'WScript.Shellオブジェクト作成 Set objWshShell = CreateObject("WScript.Shell") oApp.Visible = True '不可視にする oApp.UserControl = True 'Excelファイルを開く scriptPath = WScript.ScriptFullName scriptPath = left(scriptPath,len(scriptPath)-len(WScript.ScriptName)) oApp.Workbooks.Open scriptPath & "共同資料.xlsm"

  • WSHスクリプトでブラウザ更新

    教えてください。 WSHスクリプトでブラウザの更新をF5ではなくてControl + Rしたいのです。 Set WshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 2000 WshShell.AppActivate "テスト" WScript.Sleep 2000 WshShell.SendKeys "^R" WScript.Sleep 2000 WScript.Echo "終了" 最初の一回目の実行時はできるのですが、それ以降更新してくれません。 よろしくお願いいたします。

  • VBSファイルを定期的に自動実行する方法

    毎日同時刻に下記のVBSファイルを自動実行したいと思います。 タスクスケジューラで実行すると download.exe は起動しますが 表示されたダイアログがアクティブ状態にならないため (タイトルバーが灰色のまま、タスクバーのボタンが点滅)、 文字入力ができないまま、処理が終了してしまいます。 1.ダイアログをアクティブにし、正常に処理を実行させるには   どのように記述すれば良いですか? 2.このVBSファイルをユーザーがログオフされている状態で   実行することは可能ですか? 恐れ入りますが、ご存じの方がおられましたら、ご教示願います。 <環境> Windows 2008 Server R2 standard (64ビット) <D:\aaa.vbs> Set objShell = WScript.CreateObject("WScript.Shell") 'ダウンロードEXEを実行 Set objExec = objShell.Exec("D:\download.exe") WScript.Sleep 1000 objShell.AppActivate(objExec.ProcessID) 'ファイルのダウンロード先を指定し、実行(ENTER) WScript.Sleep 1000 objShell.SendKeys "D:\data.txt~"

  • 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}") --------------------------------------------------

  • JP1からvbs(PSExec)が起動できない

    突然失礼します。 以下のサーバーAにあるvbsを、JP1から起動しようとしていますが、うまく起動しないので、もし原因が分かる方がいたら、ご教授願いたいです。 起動しようとしているサーバーAの「test.vbs」は、簡単に言うと、PsExecを利用して、サーバーBの「hoge.bat」を実行する内容です。 ***test.vbs*** Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "PsExec.exe サーバーBIPアドレス -u 実行ユーザ -p 実行ユーザーパスワード cmd" WshShell.AppActivate "cmd " WScript.Sleep 3000 WshShell.SendKeys "cd C:\" WshShell.SendKeys "{enter}" WshShell.SendKeys "hoge.bat" WshShell.SendKeys "{enter}" WScript.Sleep 10000 WshShell.AppActivate "cmd" WshShell.SendKeys "exit" WshShell.SendKeys "{enter}" ************************ 上記バッチを手動で実行するとうまくいくのですが、 JP1で起動しようとすると、うまくいきません。 そもそもPsExecが実行出来ていないかも。。。。 宜しくお願いします。

  • VBSファイルをスタートアップフォルダに入れておいて、

    エクセル2007の特定ファイルをそのVBSファイルにより自動起動させる方法を教えてください。ちなみに、次のようなVBSファイルを作成しましたがエラーとなってしまいます。 Option Explicit 'オブジェクト変数の宣言とWshShellオブジェクトの作成。 Dim objWshShell Set objWshShell = WScript.CreateObject("WScript.Shell") WScript.Sleep 1000 '1秒待機 objWshShell.Run "C:¥Program Files¥Microsoft Office¥Office12¥EXCEL.exe" です。

  • ダブルコーテーションで3度も囲ってるのですが

    vbsで電卓を起動する時 Set objWshShell = WScript.CreateObject("WScript.Shell") objWshShell.Run """CALC.EXE""" のように、CALC.EXEをダブルコーテーションで3度も囲ってるのですがなんででしょうか? VBAの場合は Sub test() Dim i As Long i = Shell("CALC.EXE") End Sub のように3重には囲わなくても起動します。