保存Excel范围为PDF使用VBA
将Excel Range保存为PDF若要使用VBA将Excel中的选定范围(例如收据)另存为Excel中的PDF,请使用以下语法。
通用代码
Sub SaveRangeAsPDF() Range.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\file_name", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub
上面的代码是将固定范围另存为PDF文档的通用代码。当您在将excel导出为PDF时,您的记录宏会出现类似的代码。
范围:*可以是固定范围,动态范围或选择范围。您需要定义它。
文件名:这是pdf的完全限定名称。将其定义为字符串。
其余变量可以保留不变。我将在示例之后对其进行解释。
示例:使用VBA将Excel收据打印为PDF假设您必须定期在Excel中打印和发送收据。在这种情况下,您希望将其自动化。您不想一遍又一遍地使用export excel来进行pdf。如果您仅可以使用一个按钮来执行此操作,那会有所帮助,不是吗?
在这里,我设计了这种收据格式。我想使用“创建PDF”按钮将其打印/保存/导出为pdf。
This receipt covers the range “A2:L21”. I have already set the print area.
为了将这个excel范围另存为PDF,我们将使用上述将Excel表格导出为pdf的通用VBA代码。我们将根据我们的要求调整代码。
Sub PrintSelectionToPDF() Dim invoiceRng As Range Dim pdfile As String 'Setting range to be printed Set invoiceRng = Range("A1:L21") 'setting file name with a time stamp. pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf" 'setting the fulli qualified name. The resultent pdf will be saved where the main file exists. pdfile = ThisWorkbook.Path & strfile invoiceRng.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:= pdfile, _ Quality:= xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False End Sub
使用代码:
通过打开VBA编辑器(使用Alt + F11),将上述代码复制到您的收据文件中。在要打印的代码中调整范围和文件路径(如果需要)。您可以在下面下载工作文件。
`链接:/ wp-content-uploads-2019-12-将Excel范围保存为PDF-using-VBA.xls [
Save Excel Range as PDF using VBA]
说明:
Dim invoiceRng As Range Dim pdfile As String
代码很简单。首先,我们创建了两个变量。我们要另存为pdf的范围/工作表的“ InvoiceRng as Range”。 strFile是生成的PDF的标准文件名。
Set invoiceRng = Range("A1:L21")
由于我们的打印范围是固定的,因此我们将发票范围设置为Range(“ A1:L21”)。
pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf" pdfile = ThisWorkbook.Path & strfile
在以上两行中,我们首先使用时间戳命名文件,然后将其添加到主文件的路径。结果,pdfile包含了生成的pdf文件的全限定名称。
invoiceRng.ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:= pdfile, _ Quality:= xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=True, _ OpenAfterPublish:=False
最后,我们使用Range类的ExpoortAsFixedFormat方法将定义的Excel范围打印为PDF。我们将类型定义为xlTypePDF。另一个选择是xlTypeXPS,它将选择的范围另存为XPS文件。
我们将Filename设置为pdfile,其中包含pdf文件的完全限定名称的字符串。您可以在此处编写硬编码文本,也可以根据需要自定义文本。
接下来,我们将pdfile的质量设置为xlQualityStandard。我们还有xlQualityMinimum。
接下来,我们将IncludeDocProperties设置为True。这意味着生成的PDF将具有文档的属性。
然后我们将IgnorePrintAreas设置为True。这意味着它将忽略任何已设置的打印区域。
最后,我们将OpenAfterPublish设置为False。这意味着您创建的文件将不会自动打开。我将其设置为false是因为我使用循环创建了100多个文件,并且我不希望它们打开。如果要在使用excel创建后打开文件,请将其设置为True。
将所选范围打印为pdf
一种基本用途是仅单击一个按钮即可打印所选范围。但是最好的用法是在需要为不同客户创建多个收据的循环中使用它。创建用于填充数据的子项,然后使用此代码循环打印选定范围。
是的,这是您如何将选定范围保存为pdf的方法。希望对您有用。如果您仍然对使用VBA在excel中打印有任何疑问或疑问,请在下面的评论部分中提问。
相关文章:
使用Microsoft Excel中的VBA将所有工作簿打印在文件夹中使用此VBA代码可将每个excel工作簿打印并保存在一个文件夹中。
热门文章:
`link:/ general-topics-in-vba-split-excel-sheet-into-multiple-files-based on-column-using-vba [使用VBA基于列将Excel工作表拆分为多个文件]“ |此VBA代码根据指定列中的唯一值拆分excel工作表。
下载工作文件。
在Microsoft Excel 2016中使用VBA关闭警告消息 ||要关闭中断正在运行的VBA代码的警告消息,我们使用Application类。
在Microsoft Excel 2016中使用VBA添加和保存新工作簿] |要使用VBA添加和保存工作簿,我们使用Workbooks类。 Workbooks.Add可以轻松添加新工作簿,但是…