050 Seriendruck für bestimmten Datensatz

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

Zurück zur Excel-Hauptseite

Zurück zur Titelseite