
IE上に表示されたイメージアイコンをクリックすると、図に示す画面が現われます。
これをVBA制御により「名前を付けて保存」ボタンを押したいのですがうまくいかずご教授頂きたいです。
(なお、恐縮ながらSendkeysを利用する方法は求めておりません。また、こちら社内システムででてくる画面であるためリンクを示すことができません、申し訳ございませんがご理解願います。)
質問は↑につきますが、やってみたこと①②について補足で示します。
①SendMessageを利用する場合
https://oshiete.goo.ne.jp/qa/1809850.html
→コピペでやりたいことにかなり近いことができましたが、「開く(O)」ボタンを押してしまっています。若干理解不足ではありますが、このソースでは、「名前を付けて保存」、又は「保存」という記述しかないのに、なぜ「開く」ボタンが押さる挙動となるのかわかっていません。
②UIAutomationを利用する場合
https://oshiete.goo.ne.jp/qa/9622324.html
→エラーがでてしまい、うまくボタンをおすところまで行きませんでした。
わからないなりにUIAutomation関連の知識を入れながらパラメータを変えての試行錯誤しましたがギブアップです。うまくボタンをとらえることができません。(いや、知識不足がかなり大きいです。。)
こちらは、以前「通知バー」制御に関する投稿させて頂いた内容で、うまくいった経緯があること、また、「名前を付けて保存」ボタンが押下が成功したら、後の「名前を付けて保存ダイアログボックス」制御がそのまま利用できそうなので試してみた次第です。

No.1ベストアンサー
- 回答日時:
こんな感じですかね。
---
Option Explicit
'参照設定 UIAutomationClient
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 IUIAutomation
Dim e As IUIAutomationElement
Set o = New CUIAutomation
Dim h As LongPtr
h = FindWindowEx(0, 0, "#32770", "Internet Explorer")
If h = 0 Then Exit Sub
Set e = o.ElementFromHandle(ByVal h)
Dim iCnd As IUIAutomationCondition
iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "名前を付けて保存(A)")
Dim Button As IUIAutomationElement
Button = e.FindFirst(TreeScope_Subtree, iCnd)
Dim InvokePattern As IUIAutomationInvokePattern
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
InvokePattern.Invoke
End Sub
ありがとうございます!
大変感謝しています。
下記、Set iCnd ,Set Buttonに修正して完璧でした。
iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "名前を付けて保存(A)")
Button = e.FindFirst(TreeScope_Subtree, iCnd)
別件でもう一つUIAutomation関連で質問をする予定ですのでよろしければお願いします。
通知バーAutomation処理、反応が遅い場合があり改善したいというものです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
vbaでIEの名前を付けて保存(A)をしたい
Microsoft ASP
-
ダウンロードダイアログをVBAから操作するには?
Visual Basic(VBA)
-
IEのダウンロード通知バーのVBA制御(保存他)
Visual Basic(VBA)
-
-
4
VBAでIEのファイルを自動的にダウンロードしたい
Visual Basic(VBA)
-
5
VBA IE操作でダイアログ表示後、ファイルを開くボタンが押下できない
Visual Basic(VBA)
-
6
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
7
VBAでIEを操作、ポップアップされた画面の処理(Enter)を行いたい
Visual Basic(VBA)
-
8
ExcelVBAでリンク先の対象のファイルを保存
Visual Basic(VBA)
-
9
VBAでIEの「ファイルのダウンロード」ダイアログを制御
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
VBAからIEを操作する時のウィンドウの選択の仕方がわかりません
Excel(エクセル)
-
12
Alt+P,Alt+NをPostmessageで送るには
Visual Basic(VBA)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
VBAでIEの操作→サブウインドウを操作するには
Visual Basic(VBA)
-
15
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
16
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
17
Excel VBA で外部アプリケーションのコンテキストメニューを操作したい
その他(プログラミング・Web制作)
-
18
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
19
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ボタンをマウスで押し続けたと...
-
C#プログラムで、ボタンをショ...
-
VBA CommandButtonの文字ずれ
-
ユーザーフォームに別シートか...
-
VBAで多数のプログラムを一つの...
-
Excel VBA Application.caller...
-
[VB.net] ボタン(Flat)のEnable...
-
フォームの再読み込み
-
テラパッドを使ってるんですが...
-
プロシージャからイベントをコ...
-
Excel VBA実行中にワークシート...
-
[Excel VBA]コマンドボタンの入...
-
delphiでボタンを押せなくしたい
-
マクロについて質問です。 セル...
-
ユーザフォーム AfterUpdate処...
-
コマンドボタンやイメージにマ...
-
【VBA】Accessを終了する前にメ...
-
VBA ユーザーフォームラベルキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBAで多数のプログラムを一つの...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
C#プログラムで、ボタンをショ...
-
BorlandC++Builderでのタイマー...
-
[VB.net] ボタン(Flat)のEnable...
-
フォームの再読み込み
-
ボタンをマウスで押し続けたと...
-
閉じると「+」になり開くと「-...
-
Access VBA でデータペーストを...
-
C#でSendInputを使ったサンプル...
-
バックスペース機能の作り方
-
アイコンとボタンの違い
-
セルをマクロのボタンにしたい。
-
Excel マクロ 閉じるボタン
-
VBAのボタンの位置が変わって困...
おすすめ情報