VBA-Makros

Word 2003: "Datei Neu" soll direkt den Auswahldialog öffnen

Ab Office 2003 wird versucht, dem Benutzer Dinge zu "erleichtern". Leider führt das oft zu zusätzlichen Dialogen, wie z.B. wenn man einfach nur ein neues Dokument aus einer Vorlage erstellen will.

Mit dieser Zeile wird der Dialog direkt geöffnet; das Makro am besten gleich an ein Symbol binden. Nennt man das Makro DateiNeu, dann wird der Menüpunkt direkt ersetzt

Sub neuesdok()
   Word.Dialogs(wdDialogFileNew).Show
End Sub

Word: Formularfelder vor Aktualisierung schützen

Bei online-Formularen muß man die Formularfelder vor Aktualisierung vor dem Drucken schützen - ansonsten werden bei entsprechenden Druck-Einstellungen alle Inhalte zurückgesetzt. Man kann das beim Erstellen des Formulars berücksichtigen, indem jedes Feld mit STRG-F11 gesperrt wird - oder indem man ein kleines Makro darüber laufen läßt:

Sub Feldlock()
' Formularfelder vor Aktualisierung schützen
Dim schutz As Boolean
Dim ofeld As Object
    If ActiveDocument.ProtectionType <> wdNoProtection Then
        ActiveDocument.Unprotect
        schutz = True
    Else
        schutz = False
    End If
    For Each ofeld In ActiveDocument.Fields
        If ofeld.Type = wdFieldFormCheckBox Or ofeld.Type = wdFieldFormDropDown _
        Or ofeld.Type = wdFieldFormTextInput Then ofeld.Locked = True
    Next ofeld
    If schutz Then ActiveDocument.Protect Password:="", _
        NoReset:=False, Type:=wdAllowOnlyFormFields
End Sub

Word: Textmarken anzeigen

Wer mit userforms arbeitet, setzt in der Regel Textmarken, um die eingegebenen Werte in das Dokument einzufügen. Bei großen Formularen und vielen Textmarken braucht man zu Test- (oder zu Dokumentations-)Zwecken ab und zu mal einen Ausdruck des Dokumentes mit Namen und Position aller Textmarken.

Das Makro fügt an der Stelle aller Textmarken den Namen der jeweiligen Textmarke ein. textmarken.png

Sub TextmarkenZeigen()
Dim bm As Object
Dim s As String
Dim rngbkm As Range
Dim i, g As Integer

g = ActiveDocument.Bookmarks.Count
For i = g To 1 Step -1
    Set bm = ActiveDocument.Bookmarks(i)
    s = bm.Name
    Set rngbkm = ActiveDocument.Bookmarks(s).Range
    rngbkm.Text = "[" & s & "]"
    ActiveDocument.Bookmarks.Add Name:=s, Range:=rngbkm
    rngbkm.Bold = True
Next i
End Sub

Zahl in Text

Zahl markieren; durch das Makro wird die Markierung mit der formatierten Zahl ersetzt. Die Zahl als Text ist in der Zwischenablage und kann an beliebiger Stelle im Dokument eingefügt werden.

Zahl markieren:


Makro ausführen:

zahlintext.txt

Word/Excel: Auslesen der Umgebungsvariablen

Sub env()
Dim enVar As String, i As Integer
i = 1
Do
    enVar = Environ(i)
    Debug.Print enVar
    i = i + 1
Loop Until enVar = ""
End Sub

Word: Auslesen aller Dokumenteigenschaften

Sub properties()
Dim prop As Object, i As Integer
On Error Resume Next
i = 1
For Each prop In ActiveDocument.BuiltInDocumentProperties
     Debug.Print i
     Debug.Print prop.Name
     Debug.Print prop.Value
     i = i + 1
Next
End Sub