Vba 从excel动态保存PDF
我在Excel中有一个表格,有一个宏将ActiveSheet保存为pdf。我是否可以:Vba 从excel动态保存PDF,vba,excel,Vba,Excel,我在Excel中有一个表格,有一个宏将ActiveSheet保存为pdf。我是否可以: 选择要打印的列。现在我只是把它们藏起来 使用相同的名称保存多个pdf,并由唯一的SKU:name\u SKU.pdf连接 过滤列“SKU”并保存该SKU的pdf,自动转到下一个唯一SKU并保存pdf的方法,依此类推 目前,我手动过滤SKU列,每次单击“保存PDF”宏。我想将此任务简化为单击一次。有几种方法可以完成此任务 首先,您可以使用此功能将每个图纸打印区域保存为PDF: Function PrintT
- 选择要打印的列。现在我只是把它们藏起来
- 使用相同的名称保存多个pdf,并由唯一的SKU:name\u SKU.pdf连接
- 过滤列“SKU”并保存该SKU的pdf,自动转到下一个唯一SKU并保存pdf的方法,依此类推李>
目前,我手动过滤SKU列,每次单击“保存PDF”宏。我想将此任务简化为单击一次。有几种方法可以完成此任务 首先,您可以使用此功能将每个图纸打印区域保存为PDF:
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
此函数用于输入文件名(可以根据需要从单元格值中解析)、要保存的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
现在,假设您有一个表,其中包含名称值和图纸编号(如果不想使用打印区域,还包括范围):
然后循环此表中的值,并使用单元格值作为参数调用函数:
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
或者根据您喜欢如何定义名称/工作表/范围
希望这有帮助 这当然是可能的。如果有人能看到现有代码,他们也会更容易向您展示如何修改现有代码。请将代码粘贴到问题中,否则您会发现您的问题因未提供代码而被否决。