LoginSignup
24

More than 3 years have passed since last update.

posted at

Excel VBAでIE操作時にオートメーションエラーが出た時は、対象のURLが「信頼済みサイト」に登録されているからかもしれない。

はじめに

ExcelのデータをWEBページに転記するためのVBAを書いていた時にハマったので、メモ書きです。

ハマったソース(イメージです)

Sub IE_OpenUrl()
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    With IE
     .Visible = True
     .Navigate "(ここにURLを入力)"

    Set objectelement = IE.Document
    With objectelement
        .GetElementById("btn").Click
    End With
End Sub

結論

Excel VBAでIEを操作しようとした際に、下記のようなメッセージが表示されたら、開いているURLがIEの「信頼済みサイト」に登録されているからかもしれません。(特に操作対象が社内のイントラネットだったりすると怪しい)

実行時エラー'-2147467259
オートメーションエラーです。
エラーを特定できません。

エラーになる理由は下記のページが詳しいです。

Here's what's happening. When your browser internally "jumps" to a different security zone - from say a local address to an inTRAnet address or to an inTERnet address - IE closes/drops the current process of IE and opens another one with tighter security.

セキュリティゾーンをまたぐ場合に、セッションを維持することができないことが原因のようです。

対策

信頼済みサイトから該当のURLを削除する

簡便ですが、故あって信頼済みサイトに登録されているのでしょうから、オススメしません。

InternetExplorerMediumを使う

CreateObject("InternetExplorer.Application")ではなく、New InternetExplorerMediumを利用します。
明示的に、Integrity Level(整合性レベル)が中(MediumIL)でインスタンス化することで切り替えが発生せずに操作を継続できるようです。(まだ理解が曖昧)

'Microsoft Internet Controlsが必要なので、ツール->参照設定->Microsoft Internet Controlsにチェックを入れて「OK」

Sub OpenIEAndSetValue()
    Dim IE As Object
    Set IE = New InternetExplorerMedium

    '中略

End Sub

参考サイト

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
24