• ベストアンサー

IE9のダウンロード通知バーのVBからの操作

kumatti1の回答

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.1

こんな感じで。 --- Option Explicit '参照設定 UIAutomationClient 'C:\Windows\System32\UIAutomationCore.dll Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr Sub hoge() Dim o As IUIAutomation2 Dim e As IUIAutomationElement Set o = New CUIAutomation8 Dim h As LongPtr h = objIE.Hwnd h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString) If h = 0 Then Exit Sub Set e = o.ElementFromHandle(ByVal h) Dim iCnd As IUIAutomationCondition Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "保存") Dim Button As IUIAutomationElement Set Button = e.FindFirst(TreeScope_Subtree, iCnd) Dim InvokePattern As IUIAutomationInvokePattern Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId) InvokePattern.Invoke End Sub

f1800776
質問者

補足

神速なご回答、ありがとうございます! ご教示頂いたコードを実行したところ、コンパイルエラー(ユーザー定義型は定義されていません)が出ました。 コメントアウトに入れて頂いた「UIAutomationClient」の参照設定も行ったのですが、他に不足しているライブラリはありますでしょうか。現在設定されているものは下記のとおりです(念のため、通常のダイアログからではなくVBProject.Referencesプロパティから調べました)。 VBA Visual Basic For Applications Excel Microsoft Excel 14.0 Object Library stdole OLE Automation Office Microsoft Office 14.0 Object Library UIAutomationClient

関連するQ&A

  • IE11のダウンロード通知バーのVBからの操作

    IE11のダウンロード通知バーをExcel VBAから操作する為、 http://okwave.jp/qa/q8121989.html を参考にさせて頂きました。 「保存」のボタンを探す条件がまずい為か、IUIAutomationElementのButtonを参照する所で、Buttonが見つかっていない為、エラーになります。 Dim iCnd As IUIAutomationCondition Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "保存") Dim Button As IUIAutomationElement Set Button = e.FindFirst(TreeScope_Subtree, iCnd) Dim InvokePattern As IUIAutomationInvokePattern Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId) 〈エラーメッセージ〉 実行時エラー '91': オブジェクト変数またはwithブロック変数が設定されていません 〈動作環境〉 OS Windows 10 64bit Excel2013 どなたか、解決方法のアドバイスを宜しくお願いします。

  • IEでCSVファイルのダウンロードをしたい

    いつもお世話になっております。 VBAでWebサイトからCSVファイルをダウンロードしたいと思っております。 VBAを使わずに手動でダウンロードするときには、ボタンをクリックするとポップアップ画面が表示され、「開く」または「保存」のボタンを押してダウンロードします。 VBAでボタンを押すコードを以下のようにしました。 objIE.Document.Forms("frmParam").btnExport.Click (* btnExport=Webのソース画面に表示してあったダウンロードボタンの名前) これだと 「セキュリティ保護のため、このサイトによるこのコンピュータへのファイルのダウンロードが Internet Explorer によりブロックされました。オプションを表示するには、ここをクリックしてください」 という情報バーが画面の上部に表示されプログラムがストップしてしまいます。(オプションを手動で表示させ、「ファイルのダウンロード」を選択しても何も起こらず、プログラムは実行中のままです。) どのようにしたらうまくダウンロードできますでしょうか?

  • IE9のダウンロード通知バーで名前を付けて保存

    IE9のダウンロード通知バーをVBAから制御する方法について、下記のQ&Aでkumatti1さんの解にあるコードでは「保存」をさせる動作となっています。これを「名前に付けて保存」させることはできないでしょうか。よろしくお願いします。 http://okwave.jp/qa/q8121989.html -------------------------------------------------------------------------------- Option Explicit '参照設定 UIAutomationClient 'C:\Windows\System32\UIAutomationCore.dll Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr Sub hoge2() Const url As String = "" Dim ie As Object Set ie = CreateObject("Shell.Application").Windows.findwindowSW(url, Empty, 1, 0, 1) If ie Is Nothing Then Exit Sub Dim o As IUIAutomation2 Dim e As IUIAutomationElement Set o = New CUIAutomation8 Dim h As LongPtr h = ie.Hwnd h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString) If h = 0 Then Exit Sub Set e = o.ElementFromHandle(ByVal h) Dim iCnd As IUIAutomationCondition Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "保存") Dim Button As IUIAutomationElement Set Button = e.FindFirst(TreeScope_Subtree, iCnd) Dim InvokePattern As IUIAutomationInvokePattern Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId) InvokePattern.Invoke DoEvents Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "通知バーのテキスト") Dim iElemFound As IUIAutomationElement Set iElemFound = e.FindFirst(TreeScope_Subtree, iCnd) Dim iValuePattern As IUIAutomationValuePattern Set iValuePattern = iElemFound.GetCurrentPattern(UIA_ValuePatternId) Do DoEvents If iValuePattern.CurrentValue Like "*のダウンロードが完了しました。*" Then Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "閉じる") Set iElemFound = e.FindFirst(TreeScope_Subtree, iCnd) Set InvokePattern = iElemFound.GetCurrentPattern(UIA_InvokePatternId) InvokePattern.Invoke Exit Do End If Loop End Sub --------------------------------------------------------------------------------

  • ダウンロードできなくなりました(win7,ie10

    windows7,ie10 ノートン360 最近、webからダウンロードができなくなりました。 直近では、Adobe Flash Playerのインストールができません。 (http://get.adobe.com/jp/flashplayer/) 上記サイトで、今すぐダウンロードを押下すると、 一瞬だけ左上に小さい別ウィンドウが開き、すぐ消えます。 本ウィンドウの方で 「インストールの準備をしています。しばらくお待ちください...」という表示の右横に 工事中のようなマークが動いていますが、しばらくするとそのマークも消えます。 それで、終わります。 反応が全くない感じです。 ノートンの侵入防止をオフにしてもだめでした。 ポップアップブロックをオフにしてもだめでした。 その他は試していませんが、トラブルシューティングに記載されている ・JavaScript が有効になっていること。→確認しました。 ・Internet Explorer で警告メッセージが表示された場合は、情報バーをクリックし [ブロックされているコンテンツを許可] を選択します。→この表示自体がされません。(以前、別のファイルをダウンロードしようとした際によく表示されていました。このあたりが問題でしょうか?) どなたか、分かる方いらしたら教えていただけますか。 よろしくお願いします。

  • IE10の通知バーの保存ボタンをVBAで制御したい

    IE10でダウンロードの際に表示される通知バーの保存ボタンをAccess2010VBAで制御したいと考えており、 http://okwave.jp/qa/q8121989.html を参考にさせていただきました。 この際、下記コードのように Const url As String = "ttp://www.xxx.com"と、 urlを定数にするとVBAでIE通知バーのボタンを制御できますが、 Dim url As String url = "ttp://www.xxx.com"と urlを変数にして、リンク先を記述するとIEのウィンドウを認識してくれません。 なぜ変数にすると認識されないのか理解できず、質問させていただきました。 また、urlを動的に変化させたいのですが、なにかいい方法はないでしょうか。 どなたかご教示のほど、よろしくお願いいたします。 OS Windows7 32bit Access2010です。 以下、コードです。 Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Sub hoge2() Const url As String = "ttp://www.xxx.com" Dim IE As Object Set IE = CreateObject("Shell.Application").Windows.FindWindowSW(url, Empty, 1, 0, 1) If IE Is Nothing Then msgbox "IEがありません" Exit Sub End If Dim o As IUIAutomation Dim e As IUIAutomationElement Set o = New CUIAutomation Dim h As LongPtr h = IE.hwnd h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString) If h = 0 Then Exit Sub Set e = o.ElementFromHandle(ByVal h) Dim iCnd As IUIAutomationCondition Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "保存") Dim Button As IUIAutomationElement Set Button = e.FindFirst(TreeScope_Subtree, iCnd) Dim InvokePattern As IUIAutomationInvokePattern Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId) InvokePattern.Invoke DoEvents Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "通知バーのテキスト") Dim iElemFound As IUIAutomationElement Set iElemFound = e.FindFirst(TreeScope_Subtree, iCnd) Dim iValuePattern As IUIAutomationValuePattern Set iValuePattern = iElemFound.GetCurrentPattern(UIA_ValuePatternId) Do DoEvents If iValuePattern.CurrentValue Like "*のダウンロードが完了しました。*" Then Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "閉じる") Set iElemFound = e.FindFirst(TreeScope_Subtree, iCnd) Set InvokePattern = iElemFound.GetCurrentPattern(UIA_InvokePatternId) InvokePattern.Invoke Exit Do End If Loop End Sub

  • IME2010の言語バーが表示されない

    今回、UPDATAで無料のWindows10をダウンロードしてインストールしましたが、ソフトのバージョンアップ出来なかったのでWindows10はアンインストールしました。 アンインストール後にタスクバーにMicrosft office IME 2010が表示されなくなりました。 Microsft office IME 2010の再インストールやMicrosft office IME 2010 辞書を更新 言語バーは、「タスクバーに固定」 「言語バー アイコンをタスクバーで表示する」になっています。 通知領域アイコンもアイコンと通知の表示になっています。(Microsft office IME 2010 辞書のバージョンアップ中・・・) どうやっても、元に戻りません。ご指導お願いします。

  • VBA ログイン後csvファイルをダウンロードする

    VBAで会員サイトにログインし、その後、csvファイルでダウンロードする処理を考えています。 調べたところURLDownloadToFileを使うとよいとあり、つかってみたのですが ダウンロードできません。 調べたら http://okwave.jp/qa/q5390386.html にあるように https サイトなので使えないとのことでした。 ↑のURLの記事は2009年なのですが、今も、URLDownloadToFileはhttpsサイトでは難しいのでしょうか。 URLDownloadToFileの説明を見てもよくわからなかったので、どなたか教えていただけないでしょうか。 また、httpsサイトにあるcsvをvbaでダウンロードするよい方法等もありましたらご教授お願いいたします。

  • ダウンロードができない(win7,ie10)

    windows7,ie10 ノートン360 最近、webからダウンロードができなくなりました。 直近では、Adobe Flash Playerのインストールができません。 (http://get.adobe.com/jp/flashplayer/) 上記サイトで、今すぐダウンロードを押下すると、 一瞬だけ左上に小さい別ウィンドウが開き、すぐ消えます。 本ウィンドウの方で 「インストールの準備をしています。しばらくお待ちください...」という表示の右横に 工事中のようなマークが動いていますが、しばらくするとそのマークも消えます。 それで、終わります。 反応が全くない感じです。 ノートンの侵入防止をオフにしてもだめでした。 ポップアップブロックをオフにしてもだめでした。 アドオンの管理で、全てのものを無効にしてみましたがダメでした。 プログラムとファイルの検索で、install_flashplayer11を検索してみましたが、検索されませんでした。 その他、トラブルシューティングに記載されている ・JavaScript が有効になっていること。→確認しました。 ・Internet Explorer で警告メッセージが表示された場合は、情報バーをクリックし [ブロックされているコンテンツを許可] を選択します。→この表示自体がされません。(以前、別のファイルをダウンロードしようとした際によく表示されていました。このあたりが問題でしょうか?) もしくは、先日PC内のローカルディスク(D)内のデータを外付けHDに移し、いったん(D)内の個人的なファイルを全て削除しましたが、そのときに誤って何か必要なモノを削除してしまったのかもしれません。 ダウンロードに必要な「何かのファイル」などがあるのでしょうか? どなたか、分かる方いらしたら教えていただけますか。 よろしくお願いします。

  • IE11でダウンロードが通知バーでなくなる。

    Windows7 Proにて、IE11を使用しているのですが、ダウンロードを行う時に、通知バーが表示なっていたのが、突然ダウンロードダイアログの表示に変わってしまう現象が発生しています。ダウンロードは同じホームページから同じファイルをダウンロードしています。システムの復元にて数日前に戻すと、通知バーが表示なるようになります。システム復元のポイントから、現象の発生するまでに特にパソコン環境の変更(新しいソフトを導入したとか)はありません。このような状況の解決方法について、システム復元をしなくても解決する方法があれば、ご教授の程宜しくお願い致します。

  • Microsoft Access 2019の追加

    現在使用しているPCは、Microsoft Office Standard 2016が入っていてエクセルなどを使用していますが、アクセスが必要になりました。 量販店などで販売しているMicrosoft Access 2019 ダウンロード版を購入してインストールできますか? ※自分で調べてみましたが、2016と2019の共存?ができるのか、いまいちわかりませんでした。(PCに詳しくありませんので;;) わかる方いらっしゃいましたら教えてください。 使用PC OS:Windows10 62bit office:Microsoft Office Standard 2016