保存为PDF循环无法正常工作

解决了。

macros循环遍历一个表,并自动填充值到目标工作表,并自动保存为一个PDF在桌面上与每行指定的文件名。 它不会将它们保存为一个PDF文件; 然而,如果你有Adobe Acrobat,它有一个简单的合并工具来将它们结合在一起。

Sub AutoFill_export2pdf() ' Dim rowCount As Integer Dim CurBU As String Dim CurOPRID As String Dim CurName As String Dim CurJournalID As String Dim CurJournalDate As String Dim FILE_NAME As String Sheets("List").Select rowCount = ActiveSheet.UsedRange.Rows.count Set Destsh = ActiveWorkbook.Sheets("Sheet") For sourceRow = 2 To rowCount CurOPRID = Range("A" & CStr(sourceRow)) 'OPRID CurName = Range("B" & CStr(sourceRow)) 'Name CurBU = Range("C" & CStr(sourceRow)) 'BU CurJournalID = Range("D" & CStr(sourceRow)) 'Journal ID CurJournalDate = Range("E" & CStr(sourceRow)) 'Journal Date FILE_NAME = ActiveWorkbook.Path & "\" & "OTGL_" & "JRNL_" & CurBU & "_" & CurJournalID & "_" & Format(CurJournalDate, "mm-dd-yyyy") & "_" & ".PDF" CurName = "*" & CurName & "*" CurBU = "*" & CurBU & "*" CurJournalID = "*" & CurJournalID & "*" CurJournalDate = "*" & CurJournalDate & "*" Destsh.Range("K27") = CurName Destsh.Range("D7") = CurBU Destsh.Range("G7") = CurJournalID Destsh.Range("I7") = CurJournalDate On Error GoTo 0 Call SaveAsPDF(Destsh, FILE_NAME) Sheets("List").Select Next End Sub Public Sub SaveAsPDF(ByVal destSheet As Worksheet, ByVal PDFName As String) On Error Resume Next Kill PDFName destSheet.Activate ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _ PDFName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False End Sub Sub Autofill() ' Dim rowCount As Integer Dim CurBU As String Dim CurName As String Dim CurOPRID As String Dim CurJournalID As String Dim CurJournalDate As String Dim FILE_NAME As String CurName = "*" & CurName & "*" CurBU = "*" & CurBU & "*" CurJournalID = "*" & CurJournalID & "*" CurJournalDate = "*" & CurJournalDate & "*" Sheets("List").Select rowCount = ActiveSheet.UsedRange.Rows.count Set Destsh = ActiveWorkbook.Sheets("Sheet") For sourceRow = 2 To rowCount CurOPRID = Range("A" & CStr(sourceRow)) 'OPRID CurName = Range("B" & CStr(sourceRow)) 'Name CurBU = Range("C" & CStr(sourceRow)) 'BU CurJournalID = Range("D" & CStr(sourceRow)) 'Journal ID CurJournalDate = Range("E" & CStr(sourceRow)) 'Journal Date FILE_NAME = ActiveWorkbook.Path & "\" & "OTGL_" & "JRNL_" & CurBU & "_" & CurJournalID & "_" & Format(CurJournalDate, "mm-dd-yyyy") & "_" & ".PDF" Destsh.Range("K27") = CurName Destsh.Range("D7") = CurBU Destsh.Range("G7") = CurJournalID Destsh.Range("I7") = CurJournalDate On Error GoTo 0 Call SaveAsPDF(Destsh, FILE_NAME) Sheets("List").Select Next End Sub End Sub 

您只想导出目标工作表(Destsh)。 所以使用

 Destsh.ExportAsFixedFormat Type:=xlTypePDF, _ filename:="fp", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False 

代替

 wb.ExportAsFixedFormat Type:=xlTypePDF, _ filename:="fp", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False 

这也只是将文件保存到“fp”你想要使用类似的东西

filename:= fp & "\mysheetname.pdf"