Word VBA snippets

De onderstaande code zal het actieve document - onder dezelfde naam in dezelfde directory - opslaan als PDF-document en deze als bijlage toevoegen aan een concept e-mail in Outlook.

Option Explicit

Dim objDoc As Document
Dim strPDF As String

Sub initEmailPDF()

    Set objDoc = ActiveDocument
    
    If objDoc.Path = "" Then
        MsgBox "Sla eerst het Word-document op!", vbExclamation
        Exit Sub
    End If
    
    strPDF = objDoc.Path & Application.PathSeparator & objDoc.Name & ".pdf"

    savePDF
    emailPDF

End Sub

Sub savePDF()

    objDoc.ExportAsFixedFormat OutputFileName:=strPDF, _
                                       ExportFormat:=wdExportFormatPDF, _
                                       OpenAfterExport:=False, _
                                       OptimizeFor:=wdExportOptimizeForPrint, _
                                       Range:=wdExportAllDocument, _
                                       IncludeDocProps:=True, _
                                       CreateBookmarks:=wdExportCreateWordBookmarks, _
                                       BitmapMissingFonts:=True

End Sub

Sub emailPDF()

    Dim objOutlook As Object
    Dim objMail As Object

    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)

    With objMail
        .To = "aan@email.nl"
        .CC = "cc@email.nl"
        .Subject = "onderwerp"
        .Body = "bericht"
        .Attachments.Add strPDF
        .Display
    End With

    Set objMail = Nothing
    Set objOutlook = Nothing

End Sub

Lees drie niveaus uit een custom menu bar versie <= 2003


Sub leesCustomMenu()

    Set menuNiv1 = CommandBars.ActiveMenuBar
    
    For Each niv1 In menuNiv1.Controls
        
        If niv1.Caption = "Menu-omschrijving" Then
            
            Set menuNiv2 = niv1
            
            For Each niv2 In menuNiv2.Controls
            
                Debug.Print niv2.Caption
                
                Set menuniv3 = niv2
                
                For Each niv3 In menuniv3.Controls
                
                    Debug.Print niv3.Caption
                
                Next niv3
                
            Next niv2
        
        End If
    
    Next niv1

End Sub