我在Excel中有一个表,并有一个宏将ActiveSheet保存为pdf。无论如何我可以:
目前我手动过滤SKU列,每次都点击“保存PDF”宏。我想将此任务简化为单击。
答案 0 :(得分:1)
有几种方法可以做到这一点。
首先,您可以使用此功能将每个纸张打印区域保存为PDF:
此函数接受fileName,可以根据需要从单元格值中解析,保存PDF的文件夹路径和从中获取打印区域的工作表。
Function PrintToPDF(fileName As String, folderPath As String, ByVal currentSheet As Worksheet)
currentSheet.Range(currentSheet.PageSetup.PrintArea).ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
folderPath & fileName & "_SKU.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Function
现在,您可以通过向函数添加其他参数来稍微编辑代码以仅打印自定义范围:
Function PrintToPDF(fileName As String, folderPath As String, ByVal currentSheet As Worksheet, printRange As String)
currentSheet.Range(printRange).ExportAsFixedFormat Type:=xlTypePDF, fileName:= _
folderPath & fileName & "_SKU.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Function
要使用此功能,请执行以下操作:
Sub test()
Call PrintToPDF("name", "C:/Path/To/Folder/", Worksheets(1))
End Sub
或者在第二种情况下:
Sub test()
Call PrintToPDF("1", "C:/Path/To/Folder/", Worksheets(1), "A1:C20")
End Sub
现在假设您有一个包含名称值和工作表编号的表(如果您不想使用打印区域,则为范围):
TEST1 1
TEST2 2
TEST3 3
然后遍历此表中的值并使用单元格值作为参数调用该函数:
Sub test()
For i = 1 To Sheets(1).UsedRange.Rows.Count
Call PrintToPDF(Sheets(1).Cells(i, 1).Value, "C:/Path/To/Folder/", Worksheets(Sheets(1).Cells(i, 2).Value))
Next i
End Sub
或者您喜欢定义名称/工作表/范围范围。
希望这有帮助!