2016-03-21 21 views
0

ウェブサイトを制御して(VBAを使用)、テーブル内の選択したアイテムをすべて削除しようとすると、本当にすべてを削除するかどうかを尋ねるJavascriptポップアップが表示されます(OKまたはキャンセル)。これがポップアップすると、私のvbaコードは停止し、人間がボタンをクリックするまで何もしません。VBAからJavascriptメッセージボックスを消去する

私はこれをかなり研究していますが、HTMLボタンのonClickイベントを変更すると理論的にはうまくいくと思われますが、まだ動作していないようです。以下はボタンのHTMLコード、それに続くJavascriptコード、次に私のVBAコードです。

HTMLボタン

<p>Delete:&nbsp;<input type="button" name="button_Delete" value="Delete" onclick="doDelete('c');">&nbsp;<span class="note">Deletes all selected charts.</span></p> 
 
                  <p>Move to:&nbsp;<select id="select_Lists" name="select_Lists">

JavascriptのHTMLボタンの後

<a href="javascript:doDeleteList('169', 'C');">Delete List</a> |

VBAコードは、すべてのHTMLの表から選択削除する

Dim ieDelete as HTMLInputButtonElement 
SetieDelete = IE.Document.getElementsByName("button_Delte")(0) 
Sleep(500) 
ieDelete.removeAttribute("onClick") 
Sleep(500) 
ieDelete.setAttribute "onClick", "return true;" 
Sleep(500) 
ieDelete.Click 

VBAをそのまま実行すると、引き続きJavascriptメッセージボックスが表示されます。 ieDelete.setAttribute "onClick"、 ""を追加しようとしましたが、イベント全体を削除してしまいました。それ以降は何もできませんでした。

...記録のために、別のオプションを説明する投稿も見ましたが、自分のシナリオでどのように使用するかわかりませんでした。 Respond to Website Message Box by Automating InternetExplorer with VBA

ご協力いただきありがとうございます。 ieDelete.Clickを呼び出す前に、次のVBAコードを使用して、組み込みのJavaScript confirm機能を上書き:

答えて

0

あなたはおそらく確認ダイアログ自体をハック可能性が

IE.Document.parentWindow.execScript "confirm = function() { return true; }" 

ieDelete.Clickへお電話の前にそれを挿入します)

この意志を確認ダイアログが要求されるたびにブラウザが自動的に「OK」をクリックするようにします。

PS:

  • ウェブサイトはconfirm javascriptのコールを使用しています。この答えは、次のことを想定しています。
  • 使用しているInternet Explorerのバージョンは、execScriptをサポートしています。他のバージョンではevalと呼ばれるかもしれません - 互換性の通知についてはhttps://msdn.microsoft.com/en-us/library/ms536420%28v=vs.85%29.aspxを参照してください。
+0

信じられないほど!それは素晴らしい仕事をした。 私はそれが永久にそのメッセージボックスを無効にしないと思いますが、代わりにその実行のためだけですか? –

+0

はい。その実行のためにのみ。ナビゲートまたは更新すると、元の機能が復元されます。 –

+0

優れています。助けてくれてありがとう。 –

関連する問題