![]() |
#1
|
|||
|
|||
![]()
The code you posted at https://www.msofficeforums.com/word-...html#post18401 works perfectly, but can it be enhanced to split the word mail merge by page break and save each individual file to pdf?
Any assistance you could give would be appreciated. Thanks A Code:
Sub SaveToPDF() Dim StrPath As String, StrName As String, Result With ActiveDocument On Error GoTo Errhandler StrPath = GetFolder & "\" StrName = Split(.Name, ".")(0) While Dir(StrPath & StrName & ".pdf") <> "" Result = InputBox("WARNING - A file already exists with the name:" & vbCr & _ Split(.Name, ".")(0) & vbCr & _ "You may edit the filename or continue without editing." _ & vbCr & vbTab & vbTab & vbTab & "Proceed?", "File Exists", StrName) If Result = vbCancel Then Exit Sub If StrName = Result Then GoTo Overwrite StrName = Result Wend Overwrite: .ExportAsFixedFormat OutputFileName:=StrPath & StrName & ".pdf", _ ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _ OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _ Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _ CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _ BitmapMissingFonts:=True, UseISO19005_1:=False End With Errhandler: End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function Last edited by macropod; 02-22-2013 at 08:41 PM. Reason: Split to new thread, with links & code |
#2
|
||||
|
||||
![]()
Yes, that's possible, but it would require a fair bit of re-working and how would each PDF be named?
PS: I moved your initial post to a new thread.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
![]()
Hi Paul
The first line of each merge (after the header data) has the naming convention for the letters that comprise of a few merge fields put together + .pdf. The first lines will look something like this: 2619.T138.09.20.12.pdf 2619.MHRPD.09.20.12.pdf 2619.9110.09.20.12.pdf I will prepare a washed sample file and attach. Thanks Andrea |
#4
|
|||
|
|||
![]()
Hi
Here is a sample of the mail merge document. Thanks Andrea |
#5
|
||||
|
||||
![]()
Hi Andrea,
Since you're proposing to use this with mailmerge, I suggest you take a look at: http://www.gmayor.com/individual_merge_letters.htm
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#6
|
|||
|
|||
![]() Quote:
|
#7
|
||||
|
||||
![]()
Hi Andrea,
Try: Code:
Sub ExportPagesToPDF() Dim StrPath As String, StrName As String, Rng As Range StrPath = GetFolder & "\" With ActiveDocument Set Rng = .Range(0, 0) With .Range With .Characters.Last While .Previous Like "[" & Chr(9) & "-" & Chr(14) & Chr(32) & Chr(160) & "]" .Previous.Text = vbNullString Wend End With With .Find .ClearFormatting .Replacement.ClearFormatting .Text = Chr(12) .Replacement.Text = "" .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute End With Do While .Find.Found Rng.End = .End StrName = Split(Split(Rng.Text, vbCr)(0), " ")(0) With Rng.Characters Call SavePDF(ActiveDocument, StrPath, StrName, .First.Information(wdActiveEndPageNumber), .Last.Information(wdActiveEndPageNumber)) End With Rng.Collapse wdCollapseEnd .Collapse wdCollapseEnd .Find.Execute Loop End With Rng.End = .Range.End StrName = Split(Split(Rng.Text, vbCr)(0), " ")(0) With Rng.Characters Call SavePDF(ActiveDocument, StrPath, StrName, .First.Information(wdActiveEndPageNumber), .Last.Information(wdActiveEndPageNumber)) End With End With End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path Set oFolder = Nothing End Function Sub SavePDF(Doc As Document, StrPath As String, StrName As String, StartPage As Long, EndPage As Long) Dim Result As String On Error GoTo Errhandler While Dir(StrPath & StrName) <> "" Result = InputBox("WARNING - A file already exists with the name:" & vbCr & _ StrName & vbCr & _ "You may edit the filename or continue without editing." _ & vbCr & vbTab & vbTab & vbTab & "Proceed?", "File Exists", StrName) If Result = "" Then Exit Sub If StrName = Result Then GoTo Overwrite StrName = Result Wend Overwrite: Doc.ExportAsFixedFormat OutputFileName:=StrPath & StrName, UseISO19005_1:=False, _ ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _ OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportFromTo, _ From:=StartPage, To:=EndPage, Item:=wdExportDocumentContent, _ IncludeDocProps:=True, CreateBookmarks:=wdExportCreateNoBookmarks, _ KeepIRM:=True, DocStructureTags:=True, BitmapMissingFonts:=True Exit Sub Errhandler: MsgBox "Error processing: " & StrName, vbExclamation End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#8
|
|||
|
|||
![]()
Paul
I have never seen a more beautiful thing in all my life. <3 you should add this to that mail merge tutorial doc. it is very useful. Andrea |
![]() |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
Aston | Word | 9 | 04-27-2022 07:38 AM |
Page break? | Jon | Word | 3 | 01-29-2013 09:08 AM |
![]() |
ellinj | Word | 4 | 03-21-2011 05:12 PM |
paragaph hard break, soft break and ...strange break | czomberzdaniela | Word | 2 | 12-03-2010 06:58 PM |
Page Break | Manolo | Word | 0 | 04-29-2009 11:04 PM |