16
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

#はじめに
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

#参考サイト

16
24
0

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
  3. You can use dark theme
What you can do with signing up
16
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?