excel vba でIEを操作したいのですが、サンプルコードがうまく動作しません。
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
Message#1 2015年2月6日(金)11時23分 From: 困ってます | 返事 削除 変更 |
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が解除されてしまいます。 毎回この処理をするたびに戻すと逆に手間ですのでこちらもどうにかなりませんか? |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降