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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | Sub Makro4()
Dim Efgpos As Long
Dim Spchpos As Long
Dim tabsz As Integer
Dim i As Integer
Dim ArtNr As String
Dim TxtBst As BuildingBlock
Efgpos = Selection.Start
Spchpos = ActiveDocument.Range(Efgpos, Efgpos).GoToNext(wdGoToSection). End
tabsz = ActiveDocument.Tables(1).Rows.Count
ActiveDocument.AttachedTemplate = "Q:\AAS BOT\Vorlagen\Textbausteine_VMS.dotm"
For i = 1 To tabsz
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
<strong>Selection.PasteAndFormat (wdFormatPlainText)</strong>
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
|