トップ回答者
Excel VBAからInternetExploreを呼び出すとExcel自身及びPC全体がフリーズしてしまう。

質問
-
navigateコマンドでIE11のWebページを開こうとすると、正常に動作するときと、Excelがフリーズしてしまう(Excel応答せず)状態になってしまうときがある。フリーズしたときは強制終了して再起動すると正常になる場合と再発する場合とがある。(環境:Windows10 Home 64b プリインストールPC, Office 2013, IE11 VBAプログラムはWindows7で作成したもので、Windows10でも全く正常に動いていたがここ1ケ月前頃からおかしくなった。)
(1) Officeを再インストールしてみたが解消せず。
(2) 昨年末ごろ、すべてのExcelプログラムのActiveXが作動しなくなったことがあった。あるスレッドを見たら、更新プログラム(KB2726958)の影響ではないかとあり、MSForms.exdというファイルを一度削除してみよ、とあったので実行してみたらこの問題は解決した。今度の不具合ももしかしてと思ってやってみたが問題は解消しなかった。
何を調べればいいのでしょうか?
<関係ないと思いますが、私が使用しているプログラム>
Dim ie As New SHDocVw.InternetExplore
ie.Navigate "http://microsoft.com"
ie.Visible
ですが、他のスレッドを見ますと、
Dim ie as Object
Set ie=CreateObject("InternetExplore.Application")
ie=Navigate "http: "
となっています。私のPCで実行すると "コンパイルエラー CreatObjectが定義されていない” となってしまいます。
ライブラリーファイルの設定は、Visual Basic for Application, Microsoft Excel 15.0 Object Library, OLE Automation,
Microsoft Office 15.0 Object Library, Microsoft Forms 2.0 Object Library, Microsoft Internet Controls となっています。
回答
-
> Dim ie As New SHDocVw.InternetExploreの
これは、『SHDocVw.InternetExplorer』ですよね?
> 'New' をはずしたらフリーズの解消になるのではということですが、はずすと「オブジェクト変数は設定されていない(エラー91)」になります。
外した上で、使用する前に
Set ie = New SHDocVw.InternetExplorer
またはSet ie = CreateObject("InternetExplorer.Application")
のいずれかが必要です。これらが無いと、Nothing のままとなり実行時エラー91 が発生します。それと、使用している Office は 32bit 版でしょうか、それとも 64bit 版でしょうか。もしも 64bit 版であるなら、32bit 版に変更する事を検討してみてください。
- 回答としてマーク 栗下 望Microsoft employee, Moderator 2016年12月27日 7:45
すべての返信
-
プログラミングではたとえ似たような文字列であっても1文字でも異なると正しく認識されません。
挙げられている「コンパイルエラー CreatObjectが定義されていない」についていえばCreateObjectが正確な名称でありeが抜け落ちていることが原因と思われます。また「Set ie=CreateObject("InternetExplore.Application")」についてはCreateObjectは正確な綴りですが"InternetExplorer.Application"とrが抜け落ちている可能性があります。
「Dim ie As New SHDocVw.InternetExplore」についてもSHDocVw.InternetExplorerでrが抜け落ちています。またInternetExplorer objectのExampleとの比較してもわかりますがNewすべきではありません。このNewがフリーズを引き起こす原因の可能性があります。
ともあれ、まずは綴りを正確に記述するよう心がけてください。もし心がけているのであればフォーラムでの質問でも3ヶ所も間違っているというような結果にはなっていなかったと思われます。
-
CreateObject ・・・ 恥ずかしながら’e'が欠落していました。
Sheet上に作成したコマンドボタンでSheet上のプロシジャーを実行するとIEを開くことができました。
しかし、UserForm上に作成したプロシジャーをUserForm上のコマンドボタンからこれを実行した場合、及び、Module上に作成した同プロシジャーを実行するすると、「ActiveXコンポーネントはオブジェクトを作成できません(エラー429)」となります。ヘルプをみるとレジストリの情報が古い?とかDLLが見つからない?とか、私の知識ではこれ以上先に進めません。
Dim ie As New SHDocVw.InternetExploreの 'New' をはずしたらフリーズの解消になるのではということですが、はずすと「オブジェクト変数は設定されていない(エラー91)」になります。
今回投稿の不具合以外のWindows10は全く調子よく動いていますのでクリーンインストールまではしたくありません。Excelシート上からハイパーリンクでは問題なくIEやEdgeを呼び出せますので、マクロとの関連で操作性に若干難を生じますが今後不具合が多発すればこちらで我慢します。
-
> Dim ie As New SHDocVw.InternetExploreの
これは、『SHDocVw.InternetExplorer』ですよね?
> 'New' をはずしたらフリーズの解消になるのではということですが、はずすと「オブジェクト変数は設定されていない(エラー91)」になります。
外した上で、使用する前に
Set ie = New SHDocVw.InternetExplorer
またはSet ie = CreateObject("InternetExplorer.Application")
のいずれかが必要です。これらが無いと、Nothing のままとなり実行時エラー91 が発生します。それと、使用している Office は 32bit 版でしょうか、それとも 64bit 版でしょうか。もしも 64bit 版であるなら、32bit 版に変更する事を検討してみてください。
- 回答としてマーク 栗下 望Microsoft employee, Moderator 2016年12月27日 7:45