BuildingBlockEntries as Excel heraus
08.12.2023 08:54:45
Peter Zimmermann
ich habe folgendes Problem.
Ausgangslage:
Ich habe Word-Vorlage mit Makro. Das Makro der Wordvorlage ruft sofort beim öffnen ein Formular auf, in dem ein paar Grunddaten eingegeben und ein paar Häckchen gesetzt werden, im nächsten Schritt wird daraus dann ein Brief mit bestimmten Textblöcken zusammengestellt, je nachdem, welche Häckchen gesetzt wurden. Ich muss dazu sagen, dass die Person, welche die Wordvorlage/Makros erstellt hat, nicht mehr zur Verfügung steht. Ich kann die Wordvorlage selbst auch nicht direkt ändern, da ich beim Abspeichern die Signatur des Erstellers verliere und das Makro dann nicht mehr ausgeführt wird.
Projekt:
Jetzt möchte ich die Grunddaten gerne speichern, damit ich die nicht immer neu eingeben muss. Dazu habe ich mir eine Exceltabelle gemacht. Die Wordvorlage mit Makro habe ich in eine normale Word-Vorlage umgewandelt. Das ursprüngliche Formular des Wordmakros habe ich einfach in Excel geladen, das funktioniert im wesentlichen auch. Im Wordmakro (Das ist nicht selber programmiert habe) wird dann zur weiteren Verarbeitung folgendes aufgerufen:
Dim objDoc as Word.Document, oTemplate as Word.Template
Public Sub Template()
strPfad = ThisWorkbook.Path & "\BUT-AFS2023.dotx"
If oWordApp Is Nothing Then Set oWordApp = CreateObject("Word.Application")
Set objDoc = oWordApp.Documents.Add(strPfad)
If ActiveDocument.AttachedTemplate > NormalTemplate Then
Set oTemplate = ActiveDocument.AttachedTemplate
End If
End Sub
Private Sub eintägig()
Call Template
'Schnellbausteine einfügen
If CheckBox1 = True Then
oWordApp.Selection.GoTo What:=wdGoToBookmark, Name:="eintägig"
Application.WindowState = wdWindowStateMaximize
oTemplate.BuildingBlockEntries("eintägig").Insert Where:=Selection.Range ', RichText:=True
Else
oWordApp.Selection.GoTo What:=wdGoToBookmark, Name:="eintägig"
ActiveDocument.Bookmarks("eintägig").Delete
oWordApp.Selection.Delete Unit:=wdCharacter, Count:=3
End If
'Textmarke löschen, wenn der Baustein nicht benötigt wird
If CheckBox1 = False Then
oWordApp.Selection.GoTo What:=wdGoToBookmark, Name:="E1"
oWordApp.Selection.Delete
End If
End Sub
In der Zeile
oTemplate.BuildingBlockEntries("eintägig").Insert Where:=Selection.Range ', RichText:=True
kommt dann aber die Fehlermeldung 450 "Falsche Anzahl von Argumenten oder ungültige Zuweisung einer Eigenschaft"
Was mache ich falsch?