Word VBA Serienbriefribbon aktivieren

  • Word

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von mumpel.

    Word VBA Serienbriefribbon aktivieren

    Hallo zusammen,

    wie kann ich bei Word 365 per VBA das Ribbon Serienbrief zum aktuellen machen?

    Mit einem kleinen Add-In wird eine Serienbriefdatei geöffnet und danach soll das Ribbon umgeschaltet werden auf Serienbrief.

    Kann mir jemand helfen. Die Internetlösungen funktionieren bei mir in Word nicht.

    Vielen Dank

    Volker

    Thema verschoben; Das Thema wird automatisch dort erstellt, wo man sich befindet, wenn man auf [* Neues Thema] klickt. ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Hallo INOPIAE, Hallo petaod,

    vielen Dank für die schnelle Rückmeldung.

    petaod: Deine Lösung bringt leider in der Zeile Set Access = UIA.ElementFromHandle(ByVal Application.hWndAccessApp) einen Fehler hWndAccessApp unbekannt.

    INOPIAE: Deine Lösung funktioniert. Musste zwar noch eine DoEvents, Application.ScreenUpdates, DoEvents vorne und hinten einbauen, damit ich die Anzeige der Seriendruckdatensätze richtig mitbekomme, aber jetzt läuft es erst einmal wie gewünscht.

    Schönen Tag noch.

    Gruß

    Volker
    Ich habe die Funktion aus petaod's Antwort umgeschrieben, damit sie mit MS Word und mit den AutomationIds funktioniert. -> Office Fluent UI Command Identifiers

    Function Ribbon_ActivateTab

    Visual Basic-Quellcode

    1. 'Req'd Refs: UIAutomationClient
    2. Public Function Ribbon_ActivateTab(ByVal sRibbonTabName As String) As Boolean
    3. On Error GoTo Error_Handler
    4. Dim UIA As UIAutomationClient.CUIAutomation
    5. Dim Word As UIAutomationClient.IUIAutomationElement
    6. Dim Condition As UIAutomationClient.IUIAutomationCondition
    7. Dim ToolsTab As UIAutomationClient.IUIAutomationElement
    8. Dim LegacyIAccessiblePattern As UIAutomationClient.IUIAutomationLegacyIAccessiblePattern
    9. Dim rootElement As UIAutomationClient.IUIAutomationElement
    10. Dim conditionWordApp As UIAutomationClient.IUIAutomationCondition
    11. Set UIA = New CUIAutomation
    12. Set rootElement = UIA.GetRootElement
    13. Set conditionWordApp = UIA.CreatePropertyCondition(UIA_ClassNamePropertyId, "OpusApp")
    14. Set Word = rootElement.FindFirst(TreeScope.TreeScope_Children, conditionWordApp)
    15. If Not (Word Is Nothing) Then
    16. Set Condition = UIA.CreateAndCondition(UIA.CreatePropertyCondition(UIA_AutomationIdPropertyId, ByVal sRibbonTabName), _
    17. UIA.CreatePropertyCondition(UIA_ClassNamePropertyId, "NetUIRibbonTab"))
    18. Set ToolsTab = Word.FindFirst(TreeScope_Subtree, Condition)
    19. If Not (ToolsTab Is Nothing) Then
    20. Set LegacyIAccessiblePattern = ToolsTab.GetCurrentPattern(UIA_LegacyIAccessiblePatternId)
    21. LegacyIAccessiblePattern.DoDefaultAction
    22. Ribbon_ActivateTab = True
    23. Else
    24. Debug.Print "'" & sRibbonTabName & "' tab not found."
    25. End If
    26. Else
    27. Debug.Print "Can't locate the database windows."
    28. End If
    29. Error_Handler_Exit:
    30. On Error Resume Next
    31. If Not LegacyIAccessiblePattern Is Nothing Then Set LegacyIAccessiblePattern = Nothing
    32. If Not Condition Is Nothing Then Set Condition = Nothing
    33. If Not Word Is Nothing Then Set Word = Nothing
    34. If Not conditionWordApp Is Nothing Then Set conditionWordApp = Nothing
    35. If Not rootElement Is Nothing Then Set rootElement = Nothing
    36. If Not UIA Is Nothing Then Set UIA = Nothing
    37. Exit Function
    38. Error_Handler:
    39. MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
    40. "Error Number: " & Err.Number & vbCrLf & _
    41. "Error Source: Ribbon_ActivateDatabaseToolsTab" & vbCrLf & _
    42. "Error Description: " & Err.Description & _
    43. Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
    44. , vbOKOnly + vbCritical, "An Error has Occured!"
    45. Resume Error_Handler_Exit
    46. End Function
    Aufruf mit:

    Visual Basic-Quellcode

    1. Ribbon_ActivateTab ("TabMailings")

    Weitere Beispiele zur UIAutomation findest du hier
    -> MS Word ole automation - PageColor
    -> UI automation for office 2013
    Hallo!

    Volker Bunge schrieb:

    INOPIAE: Deine Lösung funktioniert. Musste zwar noch eine DoEvents, Application.ScreenUpdates, DoEvents vorne und hinten einbauen, damit ich die Anzeige der Seriendruckdatensätze richtig mitbekomme, aber jetzt läuft es erst einmal wie gewünscht.

    Was genau hast Du alles geändert? Vielleicht kann ich das mal testen und in den Code in meinem Workshop einbauen.

    Gruß, René