マクロを使って自動で以下を実行したいのですが、(★)の部分がどうもうまくいきません。
お知恵を貸していただきたく、考えられる原因等ありましたら指摘頂きたく。
それ以前は動作OKです。
(1)社内のサイトに行く
↓
(2)Excelファイル(正確には拡張子.csv
)をダウンロードする
↓
(3)「ダウンロード通知バー」の「開く」を自動で押して、ダウンロードしたExcelファイルを開く
↓
(4)自動で開かれたワークブックオブジェクトを取得する(★)
コード
・ '(1) (省略) ・ ・ '(2) (省略) ・ ・ '(3)「ダウンロード通知バー」の「開く」を自動で押して、ダウンロードしたExcelファイルを開く 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 Dim InvokePattern As IUIAutomationInvokePattern While InvokePattern Is Nothing DoEvents Set Button = e.FindFirst(TreeScope_Subtree, iCnd) Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId) Wend InvokePattern.Invoke ・ ・ ・ '(4)自動で開かれたワークブックオブジェクトを取得する(★) Dim wb As Workbook Dim new_wb As Workbook Dim isFound As Boolean isFound = False Do Until isFound = True ■ For Each wb In Workbooks If wb.Name = "ダウンロードして開いたブック名.csv" Then Set new_wb = Workbooks("ダウンロードして開いたブック名.csv") isFound = True End If Exit For Next Loop Debug.Print (wb.Name) 'ブック名が取得できていない
追記 12/23 - Exit forの位置を修正したが取得できずフリーズする
hatena様のご指摘Exit for
の位置を修正の上、再度コードを実行したところ、
呼び出し側のExcelファイルがフリーズしたままになってしまいます。
(エラーは吐かないが、無限ループしている?)
但し、上記コード ■ 部分にブレークポイントを設定し、
■以降をステップイン実行すると、問題なくwb.Nameが取得できます。
気になる点としては、(3)ダウンロードファイルを開く際に
「ダウンロード通知バー」から「開く」を押している点です
(コードは、上記コードブロック中(3)に追記)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/22 13:45 編集
2020/12/23 03:29
2020/12/23 10:54
2020/12/28 14:01