Erstelle eine Word-Vorlage mit Textmarken (Namen = Spaltenüberschriften aus Excel. Jetzt im Excel-VBA-Editor in einem neuen Modul eingeben:
Sub Datensatzdruck()
Dim r_Liste As Range
Dim r_Felder As Range
Dim r_Datensatz As Range
Dim word As Object
Dim int_AnzFelder As Integer
Dim int_Spalte As Integer
Dim str_Feldname As String
Dim str_Feldinhalt As String
'Die Liste beginnt bei Zelle A1 und ist zusammenhängend
Set r_Liste = Range("a1").CurrentRegion
'In der ersten Zeile stehen die Spaltenüberschriften
Set r_Felder = r_Liste.Rows(1)
'Es wird die Anzahl der Felder festgehalten
int_AnzFelder = r_Felder.Columns.Count
'Dann wird der ausgewählte Datensatz ermittelt
Set r_Datensatz = Application.Intersect(r_Liste, ActiveCell.EntireRow)
'Wenn ein Datensatz ausgewählt worden ist
If Not r_Datensatz Is Nothing Then
'wird Word gestartet
Set word = CreateObject("Word.Application")
'sichtbar gemacht ( kann evtl. entfallen!)
word.Visible = True
'und ein neues Dokument auf der Basis der Vorlage erstellt
word.Documents.Add Template:="C:\XYZ.dot" Pfad und Namen anpassen!
'In diesem neuen Dokument
With word.ActiveDocument
'wird entsprechend den Feldern in der Excel-Liste
For int_Spalte = 1 To int_AnzFelder
'ermittelt wie der jeweilige Feldname
str_Feldname = r_Felder.Cells(1, int_Spalte)
'und der zugehörige Feldinhalt - in der ausgewählten Zeile - lauten und,
str_Feldinhalt = r_Datensatz.Cells(1, int_Spalte)
'wenn eine entsprechende Textmarke im Word-Dokument existiert,
If .Bookmarks.Exists(str_Feldname) Then
'wird dort der zugehörige ausgewählte Inhalt eingefügt
.Bookmarks(str_Feldname).Range = str_Feldinhalt
End If
Next
'Am Schluss wird das ganze ausgedruckt
.PrintOut
End With
'Dann wird Word beendet (ohne Speichern, bei Bedarf auch mit)
word.Quit
Set word = Nothing
Else
MsgBox "Kein Datensatz ausgewählt!"
End If
End Sub