MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 22.05.2018, 12:55   #1
laura3110
Standard VBA - Alle Autotexte einer Kategorie in eine Textmarke einfügen

Hallo,

ich möchte in meinem VBA Programm an der Stelle einer Textmarke mit dem Namen "Systeme" alle Autotexte einer Kategorie aus der Building Blocks Vorlage formatiert einfügen.

Mit dem folgenden Code funktioniert dies leider nicht so ganz.
Es wird immer nur das erste Element der Kategorie unvollständig und völlig unformatiert eingefügt. Habe auch schon das Problem gehabt, dass gar nichts hinzugefügt wurde.

In verschiedensten Foren habe ich dazu jedoch leider auch noch nicht viel gefunden.

Code:

Sub AutotextlisteHinzufuegen(oDoc As Document, strBMName As String, strBMText As String)
 
   Dim objTmp As Template 
   Dim objBB As BuildingBlock 
   Dim lngZ1 As Long 
   Dim lngZ2 As Long 
   Dim intSchleifenzaehler As Integer 

   For lngZ1 = 1 To Templates.Count 
     Set objTmp = Templates(lngZ1) 
     If objTmp.Name = "Building Blocks.dotx" Then 
       For lngZ2 = 1 To objTmp.BuildingBlockEntries.Count 
         Set objBB = objTmp.BuildingBlockEntries.Item(lngZ2)
         If objBB.Type.Name = "AutoText" Then 
           If objBB.Category.Name = strBMText Then 'Kategorie
              If oDoc.Bookmarks.Exists(strBMName) Then
                     Set rng = oDoc.Bookmarks(strBMName).Range
                     rng.Text = strBMText
                     oDoc.Bookmarks.Add strBMName, rng
                     rng.InsertAfter vbNewLine 
              End If
           End If 
         End If 
       Next lngZ2 
     End If 
   Next lngZ1 
 End Sub
Die Elemente übergebe ich der Funktion natürlich bei Aufruf der Funktion in einem anderen Sub.

Ich bin leider ein Anfänger in VBA und hoffe, dass mir jemand helfen kann.

Viele Grüße,
Laura
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 22.05.2018, 16:47   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Laura,

da bist du vermutlich den Tücken der geschlossenen Bookmarks (d.h. solcher, die du bei markiertem Bereich erstellst) erlegen:
Im ersten Durchgang fügst du den ersten Autotext ein. Dadurch wird die Bookmark zerstört und du stellst sie am gleichen Ort wieder her.
Beim nächsten Durchgang wird die Bookmark samt Inhalt (also samt erstem Baustein) wieder überschrieben und es steht der zweite Baustein drin, usw.

Übrig bleiben dürfte meiner Meinung nach deshalb nicht der erste, sondern der letzte. Warum manchmal ohne Formatierung und manchmal gar keiner eingefügt wird, hab ich jetzt nicht erforscht.

Hier ein Beispiel, wie ich es machen würde (da kommt die Formatierung mit).
Ich hab dazu deine Übergabe-Parameter in Variablen verwandelt, weil mir nicht klar war, wie du das mit der Übergabe handhabst, z.T. hab ich die Variablennamen geändert (eher aus Gewohnheit).
Die erste Schleife benötige ich nicht, da ich die Building Blocks.dotx direkt anspreche.
Code:

Sub AutotextlisteHinzufuegen()
Dim oDoc As Document
Dim bmRange As Range
Dim strBMName As String

Dim objTmp As Template
Dim objBB As BuildingBlock
Dim lngZ2 As Long

Set oDoc = ThisDocument 'dasjenige Dokument, in welchem das Makro steht

'Pfad anpassen:
Set objTmp = Templates("C:\Users\Gerhard_H\AppData\RoamingMicrosoft\Document Building Blocks\1031\14\Building Blocks.dotx")
strBMName = "meineMarke" 'Anpassen
     
       For lngZ2 = objTmp.BuildingBlockEntries.Count To 1 Step -1
            Set objBB = objTmp.BuildingBlockEntries.Item(lngZ2)
                
                If objBB.Type.Name = "AutoText" Then
                    If objBB.Category.Name = "Allgemein" Then 'Kategorie anpassen
                        If oDoc.Bookmarks.Exists(strBMName) Then
                            Set bmRange = oDoc.Bookmarks(strBMName).Range
                            
                            'nur zum Testen:
                            MsgBox "Eingefügt wird Baustein: " & objTmp.BuildingBlockEntries(lngZ2).Name
                            
                            objTmp.BuildingBlockEntries(lngZ2).Insert where:=bmRange, RichText:=True
                            'oDoc.Bookmarks.Add strBMName, bmRange 'überflüssig bei offener Textmarke
                           'bmRange.InsertAfter vbLf 'nur bei Bedarf
                        End If
                    End If
                End If
       Next lngZ2
 End Sub
Wichtig beim Nachbasteln: Ich hab eine offene Textmarke verwendet (also eine, die bei blinkender Textmarke eingefügt wird und nicht bei markiertem Bereich; den Unterschied siehst du, wenn du dier in den Optionen > Erweitert > Dokumentinhalt anzeigen die Textmarken anzeigen lässt). So eine Textmarke wird nicht zerstört und die Bausteine werden hintereinander weg an die Textmarke angepappt und verdrängen die vorherigen nach rechts (deshalb hab ich die Schleife auch umgedreht).

Falls deine Bausteine auch Tabellen beinhalten, sorge dafür, dass beim Erstellen der Bausteine vor und nach der Tabelle eine Absatzmarke mitkommt, sonst gibts Crash.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.05.2018, 07:59   #3
laura3110
Standard

Vielen Dank, es funktioniert super
 
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.