Arbeiten mit Bausteinen

Eingeführt in Word 2007, ähneln Bausteine den AutoText-Einträgen aus früheren Versionen. Mit Bausteinen können Sie Einträge jedoch auf eine Weise organisieren, in der Sie festlegen können, wie ein Benutzer sie verwendet. Ein benutzerdefinierter Baustein, der eine formatierte Dropdownliste bereitstellt, unterstützt Benutzer beim Eingeben von aussagekräftigem Inhalt an einer beliebigen Stelle im Dokument. In Kombination mit anderen Inhaltssteuerelementen können Sie mithilfe von Bausteinen schnell und problemlos leistungsstarke Lösungen entwickeln.

Das Bausteine-Objektmodell enthält drei neue Objekte und vier neue Auflistungen. Diese ermöglichen es Ihnen, eine Organisationsstruktur zu erstellen, die für Ihre spezifischen Anforderungen geeignet ist, und die Struktur für eine bestimmte Lösung zu ändern. Die neuen Objekte und Auflistungen sind in der folgenden Tabelle aufgeführt.

Name Beschreibung
BuildingBlock Ein bestimmter Bausteineintrag.
BuildingBlocks Eine Auflistung von Bausteineinträgen in einer Vorlage von identischem Typ und identischer Kategorie.
BuildingBlockEntries Eine Auflistung aller Bausteine in einer Vorlage.
BuildingBlockType Ein Bausteintyp.
BuildingBlockTypes Eine Auflistung von Bausteintypen.
Category Eine Bausteinkategorie.
Categories Eine Auflistung von Bausteinkategorien.

Grundlegendes zu Bausteinen

Bausteine sind nach Typ und Kategorie organisiert. Bausteintypen bestehen aus einer begrenzten Anzahl von WdBuildingBlockTypes-Konstanten . Obwohl es eine begrenzte Anzahl dieser Konstanten gibt, ist diese Zahl nicht gering. Es gibt 35 verschiedene WdBuildingBlockTypes-Konstanten . Diese Typen helfen Ihnen, Ihre Bausteine zu definieren und zu organisieren. Sie können zwar keine zusätzlichen Bausteintypen erstellen, aber Sie können eine unbegrenzte Anzahl von Kategorien für jeden Typ erstellen.

Kategorien bestehen aus einer unbeschränkten Anzahl von Zeichenfolgen, die Sie definieren können, um benutzerdefinierte Bausteine zu organisieren. Bausteine werden in Vorlagen gespeichert. Standardmäßig weisen die in Word enthaltenen Vorlagen Bausteinkategorien wie "Allgemein" und "Integriert" auf. Sie müssen sich aber nicht auf diese in den Vorlagen enthaltenen Kategorien beschränken. Definieren Sie einfach eine Zeichenfolge, um eine neue Kategorie zu erstellen. Typen und Kategorien werden später in diesem Thema erläutert.

Da Sie Bausteine in Typen und Kategorien organisieren können, können Bausteine unglaublich flexibel sein. Sie können z. B. einen Baustein namens "Title" mit dem Typ wdTypeBibliography und die Kategorie "Buchtitel" und einen weiteren Baustein namens "Title" mit dem Typ wdTypeBibliography und die Kategorie "Filmtitel" haben. Anschließend können Sie einen weiteren Baustein namens "Title" mit dem Typ wdTypeCustomHeaders und die Kategorie "Buchtitel" usw. verwenden. Die unglaubliche Flexibilität, die Bausteine bieten, hilft Ihnen, benutzerdefinierte Lösungen zu erstellen, ohne Code zu schreiben.

Bausteinen sind jedoch auch programmierbar. Sie können neue Bausteine erstellen, Bausteine löschen und Bausteine programmgesteuert verwalten. Sie können auch beobachten, wann Benutzer neue Bausteine in ein Dokument einfügen, indem Sie das BuildingBlockInsert-Ereignis verwenden. Außerdem können Sie Bausteine mit Inhaltssteuerelementen verwenden, um noch besser steuern zu können, welche Bausteine Benutzer in ihre Dokumente einfügen können. Sie können beispielsweise ein Bausteininhaltssteuerelement verwenden, um die Typen von Bausteinen zu filtern, die einem Benutzer angezeigt werden. Dies bedeutet, dass der Benutzer keinen Baustein in ein Dokument einfügen kann, das an einer bestimmten Stelle im Dokument nicht zulässig ist. In den folgenden Abschnitten finden Sie mehrere Beispiele, die zeigen, wie Sie die Bausteinobjekte zum programmgesteuerten Arbeiten mit Bausteinen verwenden.

Einfache Aufgaben

Die folgenden Abschnitte enthalten einfache Beispiele zum Ausführen von Aufgaben mithilfe von Bausteinobjekten. Weitere Codebeispiele finden Sie in den Themen zu Objekten und in vielen Themen zu Elementen.

Erstellen eines benutzerdefinierten Bausteins

Das Erstellen eines benutzerdefinierten Bausteins ist so einfach wie die Verwendung der Add-Methode für die BuildingBlockEntries-Auflistung . Sie können auch die Add-Methode für die BuildingBlocks-Auflistung verwenden. Diese Methode kann jedoch einen Laufzeitfehler auslösen, wenn derzeit keine Bausteine für den angegebenen Typ oder die kategorie vorhanden sind. Wie in der -Objekttabelle erläutert, ist die BuildingBlocks-Auflistung eine Auflistung von Bausteinen für einen bestimmten Typ und eine bestimmte Kategorie. Die BuildingBlocksEntries-Auflistung enthält alle Bausteine für eine Vorlage. Daher ist die bevorzugte Methode zum programmgesteuerten Hinzufügen neuer Bausteine die Add-Methode für die BuildingBlockEntries-Auflistung .

Im folgenden Codebeispiel wird die aktuelle Auswahl reduziert, ein Bereich erstellt und Text für den Bereich angegeben. Dann wird die Auswahl als benutzerdefinierter Baustein der Auflistung der Bausteineinträge in der dem aktuellen Dokument angefügten Vorlage hinzugefügt.

Sub AddCustomBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 Dim objRange As Range 
 
 ' Set the template to store the building block 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Collapse the range, set the range, and add the text 
 Selection.Collapse 
 Set objRange = Selection.Range 
 objRange.Text = "Building blocks for the technically challenged" 
 
 ' Add the building block to the template 
 Set objBB = objTemplate.BuildingBlockEntries.Add( _ 
 Name:="Title", _ 
 Type:=wdTypeCustomHeaders, _ 
 Category:="Book Titles", _ 
 Range:=objRange) 
 
End Sub

Hinzufügen einer neuen Kategorie

Wie bereits erwähnt, können Sie eine unbeschränkte Anzahl von Kategorien hinzufügen. Für die Categories-Auflistung ist jedoch keine Add-Methode verfügbar. Daher müssen Sie, um der Auflistung eine neue Kategorie hinzufügen zu können, einen neuen Baustein hinzufügen. Wenn z. B. im vorherigen Beispiel die Kategorie "Book Titles" nicht existiert, wenn Sie den Code ausführen, fügt Word sie der Categories-Auflistung hinzu.

Zugreifen auf einen vorhandenen Baustein

Irgendwann möchten Sie auf einen der Bausteine zugreifen, die Sie haben, unabhängig davon, ob es sich um einen benutzerdefinierten Baustein oder einen der integrierten Bausteine handelt. Sie können die BuildingBlockEntries-Auflistung verwenden. Da Bausteine jedoch denselben Namen haben können, müssen Sie den Typ und die Kategorie für den Baustein identifizieren, bevor Sie wissen, welcher Zurückgegebene zurückgegeben werden soll. Daher ist die beste Möglichkeit, auf vorhandene Bausteine zuzugreifen, über die BuildingBlocks-Auflistung .

Im folgenden Codebeispiel wird auf den Baustein zugegriffen, den Sie im vorherigen Codebeispiel hinzugefügt haben.

Sub GetExistingBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 
 ' Set the template where the building block is stored 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Access the building block through the type and category 
 Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _ 
 .Categories("Book Titles").BuildingBlocks("Title") 
 
End Sub

Einfügen eines Bausteins in ein Dokument

Wenn Sie auf einen Baustein zugreifen können, können Sie ihn mithilfe der Insert-Methode des BuildingBlock-Objekts in ein Dokument einfügen. Im folgenden Codebeispiel wird das vorherige Codebeispiel erweitert, indem eine Zeile zum Einfügen des Bausteins in das aktuelle Dokument an der Einfügemarke hinzugefügt wird (oder zum Ersetzen des markierten Texts, falls Text markiert ist).

Hinweis

Wenn Sie einen Baustein mithilfe des Menübands einfügen, bestimmt Word automatisch bestimmte Dinge über den Baustein, z. B. wo er eingefügt werden soll; Wenn Sie jedoch einen Baustein durch das Objektmodell einfügen, geschieht keine dieser integrierten Intelligenzen automatisch. Wenn Sie beispielsweise einen Headerbaustein mithilfe des Menübands einfügen, bestimmt Word automatisch, den vorhandenen Header zu ersetzen. Beim Einfügen desselben Headerbausteins mithilfe des Objektmodells müssen Sie explizit angeben, wo der Bausteintext platziert werden soll.

Sub InsertExistingBuildingBlock() 
 
 Dim objTemplate As Template 
 Dim objBB As BuildingBlock 
 
 ' Set the template where the building block is stored 
 Set objTemplate = ActiveDocument.AttachedTemplate 
 
 ' Access the building block through the type and category 
 Set objBB = objTemplate.BuildingBlockTypes(wdTypeCustomHeaders) _ 
 .Categories("Book Titles").BuildingBlocks("Title") 
 
 ' Insert the building block into the document replacing any selected text 
 objBB.Insert Selection.Range 
 
End Sub

Filtern einer Liste von Bausteinen in einem Inhaltssteuerelement

Wenn Sie Bausteine und Inhaltssteuerelemente miteinander kombinieren, können Sie die Bausteine filtern, auf die ein Benutzer Zugriff hat. Dazu verwenden Sie ein Inhaltssteuerelement und ein Ereignis. Wenn ein Benutzer ein Inhaltssteuerelement eingibt, wird das ContentControlOnEnter-Ereignis für das Document-Objekt ausgelöst. Dieses Ereignis weist einen Parameter für das aktive Inhaltssteuerelement auf. Sie können festlegen, ob das Inhaltssteuerelement ein Baustein-Inhaltssteuerelement ist. Falls ja, ermitteln Sie mithilfe der BuildingBlockType -Eigenschaft und der BuildingBlockCategory -Eigenschaft den Typ und die Kategorie zum Filtern der Liste der Bausteine, die für das Inhaltssteuerelement verfügbar sind. Dadurch wird angegeben, welche Bausteine in der Dropdownliste in der Kopfzeile des Inhaltssteuerelements angezeigt werden.

Im folgenden Codebeispiel wird vorausgesetzt, dass das Dokument mindestens ein Inhaltssteuerelement aufweist. Handelt es ich bei dem Inhaltssteuerelement um ein Baustein-Inhaltssteuerelement, enthält die Liste der Bausteine, die in der Bausteinliste in der Kopfzeile des Inhaltssteuerelements angezeigt wird, nur die Bausteine, die mithilfe der früher in diesem Thema erläuterten Subroutine AddCustomBuildingBlock hinzugefügt wurden. Weitere Informationen zu Inhaltssteuerelementen finden Sie unter Arbeiten mit Inhaltssteuerelementen.

Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl) 
 Dim objCC As ContentControl 
 
 Set objCC = ContentControl 
 
 If objCC.Type = wdContentControlBuildingBlockGallery Then 
 objCC.BuildingBlockType = wdTypeCustomHeaders 
 objCC.BuildingBlockCategory = "Book Titles" 
 End If 
End Sub

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.