Vorlagen werden verwendet, um schnell ein Standard-Look für ein Dokument oder eine Gruppe von Dokumenten zu definieren. Das Wunderbare an Vorlagen ist, dass Sie eine Vorlage definieren können, um Ihrem Dokument ein Aussehen zu verleihen, und eine andere Vorlage, um ihm ein völlig anderes Aussehen zu verleihen. Sie müssen natürlich nur ändern, welche Vorlage einem Dokument zugeordnet ist.

Das Ändern der Vorlage für ein oder zwei Dokumente ist recht einfach. Was ist, wenn Sie ein Verzeichnis voller Dokumente haben, deren Vorlagen geändert werden müssen? Dies kann sehr schnell ziemlich langweilig werden. Hier kann ein Makro zur Rettung kommen – um diese alte Langeweile zu lindern und das Alltägliche sehr schnell zu erledigen. Das folgende Makro, ChangeTemplates, ändert alle Dokumente in einem bestimmten Verzeichnis, um sicherzustellen, dass sie die gewünschte Vorlage verwenden.

Sub ChangeTemplates()

Dim strDocPath As String     Dim strTemplateB As String     Dim strCurDoc As String     Dim docCurDoc As Document

' set document folder path and template strings     strDocPath = "C:\path to document folder\"

strTemplateB = "C:\path to template\templateB.dot"



' get first doc - only time need to provide file spec     strCurDoc = Dir(strDocPath & "*.doc")



' ready to loop (for as long as file found)

Do While strCurDoc <> ""

' open file         Set docCurDoc = Documents.Open(FileName:=strDocPath & strCurDoc)

' change the template         docCurDoc.AttachedTemplate = strTemplateB         ' save and close         docCurDoc.Close wdSaveChanges         ' get next file name         strCurDoc = Dir     Loop     MsgBox "Finished"

End Sub

Um das Makro zu verwenden, stellen Sie einfach sicher, dass die Variablen strDocPath und strTemplateB richtig eingestellt sind. Das Makro ändert die Vorlagenzuordnungen für alle Dokumente in einem bestimmten Verzeichnis. Wenn Sie etwas diskriminierenderes wollen, ist ein anderes Makro angebracht. Beispielsweise möchten Sie möglicherweise, dass das Makro jedes Dokument untersucht und nur diejenigen ändert, die TemplateA verwenden, sodass sie jetzt TemplateB verwenden. In diesem Fall ist das folgende Makro sehr praktisch:

Sub TemplateBatchChange()

Dim objPropertyReader     Dim strFolder As String     Dim strFileName As String     Dim objThisDoc As Word.Document     Dim strFindTemplate As String     Dim strReplaceTemplate As String     Dim strAffectedDocs As String

On Error Resume Next

'Create the PropertyReader object     Set objPropertyReader = CreateObject("DSOleFile.PropertyReader")

If Err.Number <> 0 Then         MsgBox "You must install the DSOleFile component. See " & _             "http://support.microsoft.com/kb/224351"

GoTo FinishUp     End If

'Get the template names     strFindTemplate = UCase(InputBox("Name of template to find (exclude the .dot)") & _       ".dot")



strReplaceTemplate = InputBox("Name of replacement template (exclude the .dot)") & _       ".dot"



'Make sure it's a valid template. Try to create a new document based on it.

Set objThisDoc = Word.Documents.Add(strReplaceTemplate, Visible:=False)

If Err.Number <> 0 Then         'No such template         MsgBox "There is no accessible template named " & strReplaceTemplate         GoTo FinishUp     End If     'Close the test document     objThisDoc.Close wdDoNotSaveChanges

On Error GoTo ErrorHandler     'Get the current documents path     strFolder = Word.Application.Options.DefaultFilePath(wdDocumentsPath) _       & Word.Application.PathSeparator

'Examine all Word documents in the directory

'Get the first document name     strFileName = Dir(strFolder & "*.doc")



While strFileName <> ""

'Look at the template name         If UCase(objPropertyReader.GetDocumentProperties _           (strFolder & strFileName).Template) = strFindTemplate Then

'It matches. Open the document             Set objThisDoc = Word.Documents.Open _               (FileName:=strFileName, Visible:=False)



'Change the attached template             objThisDoc.AttachedTemplate = strReplaceTemplate

'Save the change             objThisDoc.Close wdSaveChanges

'Note the document             strAffectedDocs = strAffectedDocs & strFileName & ", "

End If         'Get the next document         strFileName = Dir     Wend

'Report the results     If strAffectedDocs = "" Then         MsgBox "No documents were changed.", , "Template Batch Change"

Else         'Remove the trailing comma and space         strAffectedDocs = Left(strAffectedDocs, Len(strAffectedDocs) - 2)



MsgBox "These documents were changed: " & _           strAffectedDocs, , "Template Batch Change"

End If     GoTo FinishUp

ErrorHandler:

Set objThisDoc = Nothing     Set objPropertyReader = Nothing     Err.Raise vbError + 1001, "TemplateBatchChange", _       "TemplateBatchChange encountered an error: " & Err.Description

FinishUp:

'Release object references     Set objThisDoc = Nothing     Set objPropertyReader = Nothing End Sub

Um dieses Makro verwenden zu können, müssen Sie zunächst sicherstellen, dass die DSOLEFILE-Komponente (kostenlos von Microsoft erhältlich) auf Ihrem System installiert ist.

Weitere Informationen zu dieser Komponente finden Sie im Microsoft 224351 Knowledge Base-Artikel. Das Makro bietet Ihnen die Möglichkeit, einen zu ersetzenden Vorlagennamen und den Namen der Vorlage anzugeben, durch die sie ersetzt werden soll. Es wird sogar überprüft, ob die Ersatzvorlage vorhanden ist.

Dieses Makro sucht nach Dokumenten im Standardordner für Word-Dokumente.

Wenn Sie direkt in einem anderen Ordner suchen möchten, sollten Sie sicherstellen, dass die Variable strFolder auf den vollständigen Pfad des Ordners gesetzt wird, den Sie verwenden möchten.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der WordTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

WordTips ist Ihre Quelle für kostengünstige Microsoft Word-Schulungen.

(Microsoft Word ist die weltweit beliebteste Textverarbeitungssoftware.) Dieser Tipp (1437) gilt für Microsoft Word 97, 2000, 2002 und 2003. Sie finden eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Word (Word 2007) und später) hier: