|
excel vba でIEを操作したいのですが、サンプルコードがうまく動作しません。 あるサイトのサンプルコードでエクセルVBAでIEを操作しようと思っています。 以下はその事例なんですが、どうもSendkeysがうまくいかないみたいです。 どこか間違っていますか? Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Declare Function GetLastActivePopup Lib "user32" _ (ByVal hWnd As Long) As Long 'SendKeys "abc" 'a→b→cとキーストロークを送信 'SendKeys "{TAB 2}{ENTER}" 'TAB→TAB→ENTERとキーストロークを送信 'SendKeys "+{TAB}{ENTER}" 'SHIHT+TAB→ENTERとキーストロークを送信 'SendKeys "%Y" 'ALT+Yとキーストロークを送信 Sub SendKeys3() Dim objIE As Object 'IEを開いてファイルの保存URLを開く Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "http://book.impress.co.jp/appended/3384/IE2.html" 'Busyの間、待機 Do While objIE.Busy Sleep 1 Loop Debug.Print "ループを抜けた1" 'Busyとなるまで、待機 Do Until objIE.Busy Sleep 1 Loop Debug.Print "ループを抜けた2" 'ファイルを開くダイアログが表示されるまでループ Do While objIE.hWnd = GetLastActivePopup(objIE.hWnd) DoEvents Loop Debug.Print "ループを抜けた3" SendKeys "%S", True '保存を押すキー送信 End Sub 一応デバッグチェックをしてイミディエイトウィンドウを確認しているのですが、ループを抜けた1とループを抜けた2だけが表示されている状態です。 Do While objIE.hWnd = GetLastActivePopup(objIE.hWnd) DoEvents Loop の部分はどうもポップアップのウィンドウハンドルを見つけるまでループ処理をしているのですが、たぶんここが問題のように感じます。 色々調べるとIEのセキュリティが強化されているからだとか色々ありますが、解決方法はないものでしょうか? あと、こちらを処理するとNumLockが解除されてしまいます。 毎回この処理をするたびに戻すと逆に手間ですのでこちらもどうにかなりませんか? |
↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^
ExcelのVBA初心者入門↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^
こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。
こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。