将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。

imageThis receipt covers the range “A2:L21”. I have already set the print area.

image

为了将这个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 [

image 48Save 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可以轻松添加新工作簿,但是…​