Office関連

リボンのタブを選択するVBAマクロ

マクロでリボンのタブを選択する方法として、ActivateTabやActivateTabMsoメソッドを使う方法MSAAを使う方法がありますが、今回はUI Automationでタブを選択するマクロを紹介します。

※ UIAutomationClient(UIAutomationCore.dll)要参照
※ UIAutomationClient参照時にエラーが発生する場合は「UIAutomationClient参照時にDLL読み込みエラーが発生した時の対処法」参照

Option Explicit

Public Sub Sample()
  MsgBox "[ホーム]タブを選択します。", vbSystemModal
  SelectRibbonTab "ホーム"
  MsgBox "[ファイル]タブを選択します。", vbSystemModal
  SelectRibbonTab "ファイル タブ"
End Sub

Public Sub SelectRibbonTab(ByVal TabName As String)
'リボンのタブを選択
  Dim uiAuto As UIAutomationClient.CUIAutomation
  Dim elmRibbon As UIAutomationClient.IUIAutomationElement
  Dim elmRibbonTab As UIAutomationClient.IUIAutomationElement
  Dim cndProperty As UIAutomationClient.IUIAutomationCondition
  Dim aryRibbonTab As UIAutomationClient.IUIAutomationElementArray
  Dim ptnAcc As UIAutomationClient.IUIAutomationLegacyIAccessiblePattern
  Dim accRibbon As Office.IAccessible
  Dim i As Long
  
  Set elmRibbonTab = Nothing '初期化
  Set uiAuto = New UIAutomationClient.CUIAutomation
  Set accRibbon = Application.CommandBars("Ribbon")
  Set elmRibbon = uiAuto.ElementFromIAccessible(accRibbon, 0)
  Set cndProperty = uiAuto.CreatePropertyCondition(UIA_ClassNamePropertyId, "NetUIRibbonTab")
  Set aryRibbonTab = elmRibbon.FindAll(TreeScope_Subtree, cndProperty)
  For i = 0 To aryRibbonTab.Length - 1
    If aryRibbonTab.GetElement(i).CurrentName = TabName Then
      Set elmRibbonTab = aryRibbonTab.GetElement(i)
      Exit For
    End If
  Next
  If elmRibbonTab Is Nothing Then Exit Sub
  Set ptnAcc = elmRibbonTab.GetCurrentPattern(UIA_LegacyIAccessiblePatternId)
  ptnAcc.DoDefaultAction
End Sub

Microsoft Communityにあった質問「【PowerPoint VBA】 グラフ内のデータラベルのインデックスを取得するコード」の回答用に書いたコードの一部抜粋になります。
MSAAでの処理と比べると大分すっきりしていて良い感じです。

関連記事

  1. Office関連

    手軽に参照設定するためのVBAアドイン

    thom氏のブログで面白い記事がありました。・VBA 参照…

  2. Office関連

    [Excel Services ECMAScript]ループによる入力と一括入力の処理時間について

    埋め込んだExcelワークブックのセルに対して、ループで1セルずつ入力…

  3. Office関連

    YouTube動画挿入アドイン for PowerPoint

    前回の記事でPowerPoint 2013でYouTubeの動画が挿入…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP