添付画像に示すような、あるアプリ(非MicroSoft)で表示される2つのコンボボックスをもつダイアログボックスをUI AutomationでVBA制御したいです。
(参照添付画像:調べたコントローラ情報も載せました。)
具体的に制御したい事は以下2点ですが、うまく動作できないためご助言を頂きたいです。
■制御したいこと
①右側のコンボボックスを▼を押す。
→現状:左側のコンボボックスの▼が押されてしまう。
②任意のファイル形式を選択する。
→現状:入力はできないため、ボックス内にあるPNG形式を選択したい。
■実際にやったこと。
制御コードは、下記サイトの最下段コード「通知バーの名前を付けて保存」を参考にしました。
<https://www.ka-net.org/blog/?p=4855>
①の対応のみ(以下参照)
Set uiAuto = New UIAutomationClient.CUIAutomation
Set elmRoot = uiAuto.GetRootElement
Set W= uiAuto.CreatePropertyCondition(UIA_NamePropertyId, "開く")
'この開くは、ダイアログボックスの名前
Set X= uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "#32770")
Set Y= uiAuto.CreateAndCondition(W, X)
Set Z = elmRoot.FindFirst(TreeScope_Subtree, Y)
SET A = uiAuto.CreatePropertyCondition(UIA_NamePropertyId, "開く")
'(この「開く」は、どちらコンボボックスも▼(ドロップダウン)の名前が「開く」という名前であったため採用)
SET B = uiAuto.CreatePropertyCondition(UIA_ControlTypePropertyId, UIA_ButtonControlTypeId)
SET C =uiAuto.CreateAndCondition(A,B)
Set O = Z.FindFirst(TreeScope_Subtree, C)
Set P= O.GetCurrentPattern(UIA_InvokePatternId)
P.Invoke
その他下記2つも試してみましたが、Set Zで取得できずでした(Z is Nothing)。
・Set Aで、"開く"→"ファイルの種類(T):" (右側のコンボボックスの名前)
・Set Bで、UIA_ButtonControlTypeId → UIA_ComboBoxControlTypeId
なお、②については対応方針を打ち出せていないです。
このような状況ですが、ご助言頂けると助かります。
No.1ベストアンサー
- 回答日時:
まあ、自分も教わったクチなので余り大した事が言えません・ω・
>IUIAutomationElementArray
複数の要素を一度に取得して、ループさせてインデックスで目的の要素を判別したらどうでしょう。
お返事遅くなりました。
大変大きなツールを得られました。
実際にはなかなかすぐにできず、基礎から理解しながら進めることになりました。お蔭様でこの手のことにようやく理解が進むようになりました。
本当にありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
推しミネラルウォーターはありますか?
推しミネラルウォーターがあったら教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
親ウインドウにあるOKボタンを押す方法
Visual Basic(VBA)
-
他アプリの操作(メニューバー)
Visual Basic(VBA)
-
EnumChildWindowsの使い方(VBA)
Visual Basic(VBA)
-
-
4
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
5
VBAでIEを操作、ポップアップされた画面の処理(Enter)を行いたい
Visual Basic(VBA)
-
6
ColorをRGBで指定する方法
Visual Basic(VBA)
-
7
VBAでコントロールのハンドルを取得したい
Visual Basic(VBA)
-
8
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
9
ExcelVBAでAPIを使って外部ウインドウのエディットテキストを取得する方法
Visual Basic(VBA)
-
10
vbaでIEの名前を付けて保存(A)をしたい
Microsoft ASP
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
12
VBA IE ダウンロード ダイアログ制御(名前を付けて保存)
Visual Basic(VBA)
-
13
イミディエイトウインドウの最高表示数は199行?
Excel(エクセル)
-
14
VBA IE通知バーの制御 バー内のボタン 開く/保存/キャンセルを押す
Visual Basic(VBA)
-
15
Excel VBAで他アプリケーションの文字列取得
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
中途採用のMSCってなんの略なん...
-
電気の配電盤の52番、27番は何...
-
switchbot の指ロボットで除湿...
-
C/C,M/Cの意味
-
ワンループコントローラについ...
-
【直流電気】直流電源を使うの...
-
FLネットとイーサネットの違い...
-
空調機の動力盤、制御盤等 初...
-
【VBA】UI Automationコンボボ...
-
調節計の P・I・C の意味は?
-
プロコンって何ですか?
-
USBよりGP-IBが優位になる点・・・
-
位置型PIDと速度型PIDの使い分...
-
ジョブ≒バッチファイル≒シェル...
-
小型DCブラシレスモーターを直...
-
フルクローズドループとセミク...
-
生産設備について質問です。 10...
-
モーターの定格電流の出し方
-
三相200v3.7kwのモーターに必要...
-
モーター
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
電気の配電盤の52番、27番は何...
-
プロコンって何ですか?
-
switchbot の指ロボットで除湿...
-
位置型PIDと速度型PIDの使い分...
-
C/C,M/Cの意味
-
中途採用のMSCってなんの略なん...
-
フルクローズドループとセミク...
-
ワンループコントローラについ...
-
リレー回路のシミュレーション...
-
リレー制御の警報のBL、BZって...
-
【VBA】UI Automationコンボボ...
-
遮断器に並列で付いている51G、...
-
発電所のガバナとは何のことで...
-
FLネットとイーサネットの違い...
-
ノーズR補正の計算
-
電磁接触器SRC3631-5-1復帰不良
-
VISCAとは?
-
空調機の動力盤、制御盤等 初...
-
制御系の抵抗値は1Ωを超えると...
-
USBよりGP-IBが優位になる点・・・
おすすめ情報