VBAで「このページから移動しますか」というダイアログを閉じる
前回の続きでもありますが、ブラウザでページを閉じようとしたり、他のページに移動しようとした時に、「このページから移動しますか」というダイアログが表示される場合がありますが、VBAでスクレイピングしようとした時に邪魔になったりします。 Pythonとかでやるのであれば、リンク先のURLを直接GETして、BeartifurSoupに放り込むだけなので、ページ遷移とか気にしなくていいんでしょうが、VBAだとIEを間接的に操作して行うので、このダイアログをなんとか閉じなければいけないようです。 WindowsAPIから、SetForeGroundWindow とSendKeysを使用して、無理やりENTERキーとか、スペースキーを押してやるという方法もありますが、その瞬間フォーカスを奪われてしまうので、VBAを走らせながら、他の作業を同時にやってたりすると、ちょっとストレスになってしまいます。 というわけで、VBAからなんとかこのダイアログを閉じる方法を探してみましたが、微妙にうまく動作しないので、あれこれと組み合わせたりちょっと修正を加えたりした結果です。 ObjIE.Document.Script.SetTimeout "javascript:open('about:blank', '_self'),close();",10 Application.Wait Now() + TimeValue("00:00:01") hWnd = FindWindow(vbNullString, "Winows Internet Explorer") If hWnd <> 0 Then PostMessage hWnd, &H111&, vbOk, 0 End If もちろん、WindowsAPI の FindWindow とPostMessage をしようしているので、それぞれDeclare で宣言しておく必要があります。 "Winows Internet Explorer" の部分はもちろん IE の場合なので、このあたりは環境によって変更が必要でしょう。 いろいろ見て回ったので、どこのサイトかわからなくなってしまいましたが...