Hallo zusammen,
ich würde gerne eine Template-Datei mit einigen Textbausteinen per Makro bearbeiten. Die Textbausteine in dieser Vorlagendatei sind Tabellen, in denen Informationen über Artikel und deren Preise gespeichert sind. In jedem Textbaustein steht genau ein Artikel und ein Preis (auch noch etwas blabla außenrum, das muss ich aber nicht bearbeiten). Mein Ziel wäre nun, per Makro die hinerlegten Preise in den Textbausteinen zu überschreiben, sodass ich am Ende eine Vorlagendatei mit aktuellen Preisen habe.
Dazu habe ich nun eine Tabelle in Word implementiert, in der in einer Spalte die Artikelnummern stehen und in einer anderen die zugehörigen Preise. Glücklicherweise sind die Artikelnummern gleichzeitig die Namen der Bausteine.
Nach der Tabelle füge ich einen Abschnittumbruch ein. Im zweiten Abschnitt soll das Makro dann die Textbausteine bearbeiten. Dazu habe ich eine for-Schleife, die entlang der Tabelle jeweils eine Aritkelnummer, also den Bausteinnamen, kopiert, diesen dann im zweiten Abschnitt einfügt, den zugehörigen Textbaustein lädt, den richtigen Preis aus der ersten Tabelle kopiert und den alten Preis im Textbaustein überspeichert. Soweit klappt das auch.
Anschließend soll natürlich der Textbaustein unter der Artikelnummer gespeichert werden und hier klappts dann nicht mehr.
Folgenden Code habe ich im Makro:
Sub Makro4()
'
' Makro4 Makro
Dim Efgpos As Long 'Einf?geposition Textbaustein
Dim Spchpos As Long 'Speicherposition, bis hierhin wird der Textbaustein zum Speichern markiert
Dim tabsz As Integer 'Anzahl der Zeilen in Tabellle 1 (Artieklnr. und neue Preise)
Dim i As Integer 'Laufvariable f?r Tabellenabfrage
Dim ArtNr As String
'Dim TxtBstMDS As Template
Dim TxtBst As BuildingBlock
Efgpos = Selection.Start 'Setzt die aktuelle Cursorposition als Einf?geposition
Spchpos = ActiveDocument.Range(Efgpos, Efgpos).GoToNext(wdGoToSection).End 'Setzt das Ende des aktuellen Abschnitts als Speicherposotion
tabsz = ActiveDocument.Tables(1).Rows.Count 'Z?hlt die Zeilen der Tabelle 1
ActiveDocument.AttachedTemplate = "Q:\AAS BOT\Vorlagen\Textbausteine_VMS.dotm"
For i = 1 To tabsz 'Tabellenabfrage
ActiveDocument.Tables(1).Cell(i, 2).Select
ArtNr = Selection
Selection.Copy
ActiveDocument.Range(Efgpos, Efgpos).Select
Selection.PasteAndFormat (wdFormatPlainText)
Selection.Range.InsertAutoText
ActiveDocument.Tables(1).Cell(i, 3).Select
Selection.Copy
ActiveDocument.Tables(2).Cell(2, 4).Select
Selection.PasteAndFormat (wdFormatPlainText)
ActiveDocument.Tables(2).Cell(2, 4).Select
Selection.Extend
Selection.Extend
Selection.Extend
Selection.Extend
Selection.Extend
Set TxtBst = ActiveDocument.AttachedTemplate.BuildingBlockEntries.Add(ArtNr, wdTypeAutoText, "General", Selection.Range, , wdInsertContent)
Selection.Delete
Selection.TypeParagraph
Next
End Sub
Vor dem Start des Makros habe ich den Cursor im Dokument im zweiten Abschnitt, wo die Textbausteine bearbeitet werden sollen. Wenn ich das Makro starte, bekomme ich den Laufzeitfehler 4198, Befehl misslungen und er stoppt in der fett markierten Zeile. Wenn ich das Makro mit [F8] Schritt für Schritt durchgehe, zeigt er mir keine Fehlermeldung und macht im Dokument auch, was ich will. Wenn ich allerdings anschließend die Textbausteine lade, um den Preis zu kontrollieren, steht darin immer noch der alte Preis.
Kann mir hier jemand helfen?
Würde mich freuen über eure Ratschläge
MfG, JungleMumble
|