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:
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