プロが教える店舗&オフィスのセキュリティ対策術

添付画像に示すような、あるアプリ(非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

なお、②については対応方針を打ち出せていないです。
このような状況ですが、ご助言頂けると助かります。

「【VBA】UI Automationコン」の質問画像

A 回答 (1件)

http://wayback.archive.org/web/20130322175258/ht …
まあ、自分も教わったクチなので余り大した事が言えません・ω・

>IUIAutomationElementArray
複数の要素を一度に取得して、ループさせてインデックスで目的の要素を判別したらどうでしょう。
    • good
    • 1
この回答へのお礼

お返事遅くなりました。
大変大きなツールを得られました。
実際にはなかなかすぐにできず、基礎から理解しながら進めることになりました。お蔭様でこの手のことにようやく理解が進むようになりました。
本当にありがとうございます。

お礼日時:2017/10/18 22:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A