Коллега готовит слияние по почте в слове, есть 7 адресатов, у меня есть следующий код, чтобы напечатать каждую страницу в pdf и сохранить ее как pdf с уникальным именем из массива.Массив, кажется, допускает так много имен файлов, хотя, если код массива идет в две строки, он, кажется, бросает колебание. Я довольно новичок во всем этом, поэтому, пожалуйста, будьте хороши, ха-ха!Я приложил код ниже: Sub SplitIntoSeparatePDFs ()
Dim oDocMultiple As Document
Dim oDocSingle As Document
Dim oRngPage As Range
Dim iCurrentPage As Long, iPageCount As Long
Dim strNewFileName As Variant
Dim arrFileNames() As Variant
Dim i As Long
Application.ScreenUpdating = False
' path to original (long) document
Set oDocMultiple = Documents.Open("C:\Users\lwal4\Desktop\Word Version of OP res care mail merge.docx")
'instantiate the range object
Set oRngPage = oDocMultiple.Range
' put all file names in an array
arrFileNames = Array("adl plc.pdf", "advent estates limited.pdf", "albemarle rest home ltd.pdf""avery homes (nelson) limited.pdf", "avery homes nuneaton limited.pdf", "b and e thorpe-smith.pdf", "barchester healthcare homes ltd.pdf", "ben - motor & allied trades benevolent fund.pdf", "bentley house limited.pdf", "benvarden residential care homes limited.pdf", "berkley care (warwick) limited.pdf", "bm care warwick limited.pdf", "bupa care homes (ans) limited.pdf", "butts croft limited.pdf", "care uk community partnerships ltd.pdf", "caring homes healthcare group limited.pdf", "central england healthcare limited.pdf", "clarendon manor limited.pdf", , "coate water care company (church viewnursing home) limited.pdf", "cow lees care home ltd.pdf", "craighaven limited.pdf", "crosscrown ltd.pdf", "culpeper care limited.pdf",
"adl plc.pdf", "advent estates limited.pdf", "albemarle rest home ltd.pdf" "avery homes (nelson) limited.pdf "," avery homes nuneaton limited.pdf "," b and e thorpe-smith.pdf "," barchester healthcare homes ltd.pdf "," ben - motor & allied trades Благотворительный фонд.pdf "," bentley house limited.pdf "," benvarden интернат для дома с ограниченными возможностями. pdf "," berkley care (warwick) limited.pdf "," bm care warwick limited.pdf "," bupa care homes (ans) limited.pdf "," butts croft limited.pdf "," партнерства по уходу за обществом Великобритании ltd.pdf "," группа по уходу за домами с ограниченными возможностями. pdf "," здравоохранение в центральной Англии с ограниченной ответственностью. pdf "," поместье Кларендон.home) limited.pdf "," ltd.pdf дома по уходу за коровами "," craighaven limited.pdf "," crosscrown ltd.pdf "," ограниченной ответственностью по уходу за вином ")
iCurrentPage = 1
'get the original document's page count
iPageCount = oDocMultiple.Content.ComputeStatistics(wdStatisticPages)
Do Until iCurrentPage > iPageCount
If iCurrentPage = iPageCount Then
'last page (there won't be a next page)
oRngPage.End = ActiveDocument.Range.End
Else
'Find the beginning of the next page
'Must use the Selection object. The Range.Goto method will not work on a page
Selection.GoTo wdGoToPage, wdGoToAbsolute, iCurrentPage + 1
'Set the end of the range to the point between the pages
oRngPage.End = Selection.Start
End If
'copy the page into the Windows clipboard
oRngPage.Copy
'create a new document
Set oDocSingle = Documents.Add
'paste the clipboard contents to the new document
oDocSingle.Range.Paste
'remove any manual page break to prevent a second blank
oDocSingle.Range.Find.Execute Findtext:="^m", ReplaceWith:=""
'build a new file name based on the original multi-paged path and name from the array
strNewFileName = oDocMultiple.Path & "\" & arrFileNames(i)
Debug.Print strNewFileName
'save the new single-paged document
oDocSingle.SaveAs FileName:=strNewFileName, FileFormat:=wdFormatPDF, AddToRecentFiles:=False
'move to the next document (1 pages later)
iCurrentPage = iCurrentPage + 1
'close the new document without saving
oDocSingle.Close SaveChanges:=wdDoNotSaveChanges
'go to the next page
oRngPage.Collapse wdCollapseEnd
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub