Tipp 0446
|
Makroaufzeichnung zum Generieren von Code
|
 |
|
Autor/Einsender: Datum: |
|
Angie 25.03.2005 |
|
Entwicklungsumgebung: |
|
Word |
|
|
Wenn Sie sich nicht sicher sind, welche Visual Basic-Methode oder -Eigenschaft Sie verwenden
sollen, können Sie die Makroaufzeichnung aktivieren und die Aktion manuell ausführen. Die
Makroaufzeichnung übersetzt Ihre Aktionen in Visual Basic-Code und stellt damit eine
Hilfe dar.
|
Es gibt jedoch einige Einschränkungen beim Aufzeichnen von Makros, Folgendes lässt sich
beispielsweise nicht aufzeichnen:
|
- Bedingte Verzweigungen
- Variablenzuweisungen
- Schleifenstrukturen
- Benutzerdefinierte Formulare
- Fehlerbehandlung
- u.v.m
|
|
Optimieren von aufgezeichnetem Code |
|
Nachdem Ihre Aktionen aufgezeichnet wurden, können/sollten Sie den Code Ihren Wünschen entsprechend
ändern bzw. anpassen. Makros, die über die Makroaufzeichnung erstellt wurden, sind von der
Markierung abhängig, und verwenden die Selection-Eigenschaft zur Rückgabe des
Selection-Objekts.
|
|
Beispiel - Text zur Kopfzeile hinzufügen |
|
Hier wird davon ausgegangen, dass es sich um ein Dokument handelt, das nur aus einem Abschnitt
besteht, und bei Seitenlayout weder 'Erste Seite anders' noch 'Gerade/ungerade anders' ausgewählt ist.
Der aufgezeichnete Code, um den ggf. vorhandenen Text in der Kopfzeile zu löschen, neuen Text zuzuweisen
und diesen zu formatieren, sieht wie folgt oder ähnlich aus:
|
|
|
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or _
ActiveWindow.ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.WholeStory
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.TypeText Text:="Neuer Text in der Kopfzeile"
Selection.WholeStory
Selection.Font.Bold = wdToggle
Selection.Font.Size = 14
Selection.Font.Name = "Arial"
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
|
|
|
Die Kopfzeile des Dokuments kann durch ein Range-Objekt dargestellt werden, es
ist also nicht notwendig, wie in obigem Beispiel in die Kopfzeilenansicht zu wechseln, um
beispielsweise Text zuzuweisen.
Nachdem das Range-Objekt definiert wurde, können Methoden und Eigenschaften des
Range-Objekts angewandt bzw. zugewiesen werden, um den Inhalt des Bereichs zu modifizieren.
|
|
|
Dim objRange As Range
Set objRange = ActiveDocument.Sections(1). _
Headers(wdHeaderFooterPrimary).Range
objRange.Text = "VB-fun-Demo - Neuer Text in der Kopfzeile"
objRange.SetRange Start:=objRange.Start, End:=objRange.End
With objRange
.Font.Bold = True
.Font.Size = 14
.Font.Name = "Arial"
End With
Set objRange = Nothing
|
|
|
Beispiel - Text am Anfang des Dokuments einfügen |
|
Mit folgendem aufgezeichnetem Makro wird am Anfang des Dokuments das Wort 'Titel' und ein Absatz eingefügt,
und entsprechend formatiert:
|
|
|
Selection.HomeKey Unit:=wdStory
Selection.TypeText Text:="Titel"
Selection.TypeParagraph
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.Font.Size = 18
|
|
|
Das selbe Ergebnis kann auch hier ohne Verwendung des Selection-Objekts erreicht werden:
|
|
|
With ActiveDocument
.Range(Start:=0, End:=0).InsertAfter "Titel" & vbCrLf
With .Paragraphs(1).Range
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Font.Bold = True
.Font.Size = 18
End With
End With
|
|
|
|
In der Word-VB-Hilfe wird das Thema Arbeiten mit Range-Objekten sehr ausführlich
behandelt.
|
|