Word Vorlage mit Daten aus Excel
Guten Morgen Zusammen,
wir haben eine Word Vorlage (.dotm) mit Textformularfeldern die mit Werten (nur Text) aus einer Software befüllt werden.
Die Zeichen die von der Software übergeben werden sind leider begrenzt und wir müssen "den Rest" manuell ergänzen.
Nun ist die Frage ob es eine funktionierende Möglichkeit gibt in der World Vorlage ein Makro / VBA einzubauen, dass den Inhalt
des Textformularfelds ausliest und dann mit dem Wert aus der Excelliste (oder auch Textdatei das wäre egal) ersetzt wenn
z.B. Wert1 enthalten ist, ersetzt wird mit Max Mustermann und das dann vor allem auch so bleibt.
Ich habe schon mit VBA experimentiert, allerdings sind die Werte im Code enthalten (besser wäre in einer externen Datei).
Das größere Problem ist, dass die die Werte im generierten Word Dokument zwar ersetzt werden, nur wenn ich das dann
speichere und wieder öffne ist das Textformularfeld leer.... Vermutlich weil dem Code der Wert aus der Textmarke fehlt.
Was ich habe in der .dotm aktuell habe:
und
Wahrscheinlich wäre es besser, wenn das Textformularfeld einfach entfernt wird und der Text direkt in das erzeugte Word Dokument geschrieben wird.
Bin für jede Hilfe dankbar, aber ich hab kaum Ahnung was VBA angeht und mir das schon zusammen gegoogelt...
VG Christian
wir haben eine Word Vorlage (.dotm) mit Textformularfeldern die mit Werten (nur Text) aus einer Software befüllt werden.
Die Zeichen die von der Software übergeben werden sind leider begrenzt und wir müssen "den Rest" manuell ergänzen.
Nun ist die Frage ob es eine funktionierende Möglichkeit gibt in der World Vorlage ein Makro / VBA einzubauen, dass den Inhalt
des Textformularfelds ausliest und dann mit dem Wert aus der Excelliste (oder auch Textdatei das wäre egal) ersetzt wenn
z.B. Wert1 enthalten ist, ersetzt wird mit Max Mustermann und das dann vor allem auch so bleibt.
Ich habe schon mit VBA experimentiert, allerdings sind die Werte im Code enthalten (besser wäre in einer externen Datei).
Das größere Problem ist, dass die die Werte im generierten Word Dokument zwar ersetzt werden, nur wenn ich das dann
speichere und wieder öffne ist das Textformularfeld leer.... Vermutlich weil dem Code der Wert aus der Textmarke fehlt.
Was ich habe in der .dotm aktuell habe:
Private Sub Document_New()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim tM As Bookmark, strBefrResult As String
Dim fldFT As Field, strPEBEFRISTEXT As String
Set tM = dd1.Bookmarks("PEBEFRISTEXT")
Set fldFT = tM.Range.Fields(1)
strPEBEFRISTEXT = fldFT.Result.Text
Select Case True
Case InStr(strPEBEFRISTEXT, "Grund1")
strBefrResult = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam"
Case InStr(strPEBEFRISTEXT, "Grund2")
strBefrResult = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam"
'Case Else
'strBefrResult = "kein Grund"
End Select
fldFT.Result.Text = strBefrResult
End Sub
und
Private Sub Document_Open()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim tM As Bookmark, strBefrResult As String
Dim fldFT As Field, strPEBEFRISTEXT As String
Set tM = dd1.Bookmarks("PEBEFRISTEXT")
Set fldFT = tM.Range.Fields(1)
strPEBEFRISTEXT = fldFT.Result.Text
Select Case True
Case InStr(strPEBEFRISTEXT, "Grund1")
strBefrResult = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam"
Case InStr(strPEBEFRISTEXT, "Grund2")
strBefrResult = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam"
'Case Else
'strBefrResult = "kein Grund"
End Select
fldFT.Result.Text = strBefrResult
End Sub
Wahrscheinlich wäre es besser, wenn das Textformularfeld einfach entfernt wird und der Text direkt in das erzeugte Word Dokument geschrieben wird.
Bin für jede Hilfe dankbar, aber ich hab kaum Ahnung was VBA angeht und mir das schon zusammen gegoogelt...
VG Christian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3471131434
Url: https://administrator.de/contentid/3471131434
Ausgedruckt am: 22.11.2024 um 02:11 Uhr
8 Kommentare
Neuester Kommentar
Klassische Serienbrief Funktion. Geht also von Haus aus. Datenquelle kann beliebig gewählt werden, ob Excel, Access, SQL Server ist wurst. Done.
Zitat von @christian295:
Das ist leider nicht so einfach damit denke ich - die Textmarke bekommt von einem anderem Programm einen Wert und auf Grundlage dieses Werts soll aus Excel, Textdatei etc. ein bestimmter Text eingetragen werden.
Das ist leider nicht so einfach damit denke ich - die Textmarke bekommt von einem anderem Programm einen Wert und auf Grundlage dieses Werts soll aus Excel, Textdatei etc. ein bestimmter Text eingetragen werden.
Na das ist ja dann Kindergarten, hier mit nem Excel Sheet bei dem die Bookmark-Namen übereinander in Tabelle 1 in Spalte A stehen und deren Daten in Spalte B:
Sub BookmarksErsetzen()
Dim strDataPath As String, bm As Bookmark, x As Object
strDataPath = ThisDocument.Path & "\Daten.xlsx"
With GetObject(strDataPath)
For Each bm In ThisDocument.Bookmarks
Set x = .Sheets(1).Range("A:A").Find(bm.Name, LookIn:=-4163, LookAt:=1)
If Not x Is Nothing Then
bm.Range.Text = x.Offset(0, 1).Value
End If
Next
.Close False
End With
End Sub
Ja, geht alle durch und sucht deren Namen in der Excel-Datenvorlage, sieht man doch...
Bleibt der Text dann auch nach dem speichern erhalten
Klar wenn du die Mappe abschließend noch mit .Save speicherst.Den Pfand zur Daten.xlsx dann wahrscheinlich den ganzen Pfad oder?
Joa sicher, war ja nur ein Beispiel.
Oh män, copy n paste Opfer ..... Koppschüttel ...
Tschö.
Tschö.