Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1580to1584
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Word

VBA Word
01.10.2017 16:47:21
kirsten
Hallo zusammen,
ich habe ein angepassten Code, um eine Serienbriefdatei in einzelne PDF's zu speichern. Inzwischen tut sie auch im Wesentlichen was sie soll, einzig: wenn alle PDF`s gedruckt sind, stockt er an folgender Stelle: " .ActiveRecord = i" mit dem Hinweis: "Laufzeitfehler 5853, kann Parameter nicht finden" und bezieht sich auf einen Datensatz, den es nicht mehr gibt (z.B. Nr. 6 bei 5 Empfängern des Serienbriefes). Kann mir jemand erklären, wo der Fehler liegt? Vielen Dank schonmal für eure Mühe.
Sub Merge_To_Individual_Files()
'Merges one record at a time to the chosen output folder
Application.ScreenUpdating = False
Dim StrFolder As String, StrName As String, MainDoc As Document, i As Long, j As Long
Set MainDoc = ActiveDocument
With MainDoc
StrFolder = .Path & Application.PathSeparator
For i = 1 To .MailMerge.DataSource.RecordCount
With .MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
If Trim(.DataFields("Einheit")) = "" Then Exit For
StrName = .DataFields("Einheit") & "_" & .DataFields("Nachname")
End With
.Execute Pause:=False
End With
StrName = Trim(StrName)
With ActiveDocument
'.SaveAs2 FileName:=StrPath & StrName & ".docx", FileFormat:=wdFormatXMLDocument,  _
AddToRecentFiles:=False
' and/or:
.SaveAs2 FileName:=StrPath & StrName & ".pdf", FileFormat:=wdFormatPDF, AddToRecentFiles:= _
False
.Close SaveChanges:=False
End With
Next i
End With
Application.ScreenUpdating = True
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
falsches Forum
01.10.2017 17:52:15
KlausF
Hi Kirsten,
Du bist hier im Excel-Forum gelandet. Wäre wahrscheinlich besser,
die Frage noch einmal im Word-Forum zu stellen ...
Gruß
Klaus
AW: falsches Forum
01.10.2017 18:49:29
Luschi
Hallo Kirsten,
das ständige Zugreifen und wieder deaktivieren von '.MailMerge.DataSource' kann in einer Zählschleife gutgehen, nicht gutgehen,
zumal ja in der Schleife der Zeiger auf den Datensatz verändert wird.
Word besitzt da bessere Steuerungsmöglichkeiten (siehe Link im Vba-Code):

Sub Merge_To_Individual_Files()
Application.ScreenUpdating = False
'Merges one record at a time to the chosen output folder
Dim MainDoc As Document
Dim StrFolder As String, StrName As String
Set MainDoc = ActiveDocument
With MainDoc
StrFolder = .Path & Application.PathSeparator
With .MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = TrueWith
.MailMerge.DataSource
End With
With .MailMerge.DataSource
.ActiveRecord = wdFirstRecord
Do
If Trim(.DataFields("Einheit")) = "" Then Exit For
StrName = Trim(.DataFields("Einheit") & "_" & .DataFields("Nachname"))
MainDoc.MailMerge.Execute Pause:=False
With ActiveDocument
'.SaveAs2 FileName:=StrPath & StrName & ".docx", _
FileFormat:=wdFormatXMLDocument, AddToRecentFiles:=False
'and/or:
.SaveAs2 FileName:=StrPath & StrName & ".pdf", _
FileFormat:=wdFormatPDF, AddToRecentFiles:=False
.Close SaveChanges:=False
End With
'siehe:
'https://msdn.microsoft.com/de-de/library/office/ff838901(v=office.15).aspx
If .ActiveRecord  .RecordCount Then
.ActiveRecord = wdNextRecord
End If
Loop Until .ActiveRecord = .RecordCount
End With
End With
Application.ScreenUpdating = True
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige