Excel VBA打印为PDF并自动保存文件名的方法

  • Share This
Hugh West

出口的好处是 ǞǞǞ 电子表格作为一个 PDF 通过将文件改为PDF格式,我们将能够打印并与各种专业关系人分享它。 PDF是一个值得信赖的标准,用于导出你觉得需要与他人分享或宣传的文件。 在这篇文章中,我们将演示一些VBA的例子,以打印为PDF并以自动文件名保存。

下载实践工作手册

你可以下载工作手册,用它们进行练习。

VBA打印成PDF.xlsm

Excel VBA在Excel中打印为PDF并保存为自动文件名的9个例子

我们可以很容易地将Excel文件打印成PDF格式,并使用Excel工具条以自动文件名保存文件。 但是,如果有了这个工具,就更容易了。 Excel VBA 我们只需要 VBA 我们不需要这么多的点击来完成任务,这样可以节省我们的时间。

Visual Basic for Applications ( VBA )是一种编程模型和孤立的程序,最常出现在 微软办公室 它是一种分析工具,通常可以在网上找到。 Excel插件 ,优化了人工操作,如单调、耗时的杂务。 它还可以生成 CSV 因此,让我们看看一些例子,用自动文件名将excel文件打印成PDF。

1.将工作簿打印成PDF&;在Excel中自动保存文件名

假设,我们想打印整个工作簿,并按照我们的代码上的名字保存文件名。 现在,假设我们想在电脑上保存一个PDF文件 本地磁盘 (E:) 正如我们在下图中看到的,该位置不包含任何pdf文件。 运行VBA代码后,我们将能够看到我们想要的 PDF 文件在我们的PC上的那个位置。

Excel VBA 要使用这个代码,用户可以很容易地从功能区使用作为excel菜单的代码。 要使用 VBA 打印pdf并保存为自动文件名的代码,让我们按照程序进行。

步骤。

  • 首先,到 开发商 选项卡。
  • 其次,从 编码 类别,点击 视觉基础 以打开 Visual Basic编辑器 或者按 Alt + F11 以打开 Visual Basic编辑器 .

  • 与其这样做,你可以在你的工作表上点击右键,然后转到 查看代码 这也将带你到 Visual Basic编辑器 .

  • 这将出现在 Visual Basic编辑器 我们在这里编写代码,从范围中创建一个表。
  • 第三,点击 模块 插入 下拉菜单栏。

  • 这将创建一个 模块 在你的工作簿中。
  • 并且,复制并粘贴 VBA 代码如下所示。

VBA代码。

 Sub Print_Workbook() Dim loc As String loc = "E:\Workbook.pdf" ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • 运行代码,按 F5 键盘上的键。

  • 最后,你可以看到,一个PDF文件的名称。 工作手册 所以,这意味着文件名被自动保存。

  • 最后,如果你回到你的工作簿,你可以看到一些虚线。 这是因为文件现在已经可以打印了。

VBA代码解释

 Sub Print_Workbook() 

是代码的一部分,用于处理代码中的工作,但不会返回任何值。 它也被称为子过程。 因此我们将我们的过程命名为 Print_Workbook() .

 loc = "E:\Workbook.pdf" 

这一行是关于位置和pdf文件名的。 这里,我们把文件保存在 E: 在我们的计算机上,将文件命名为 工作手册 .

 ActiveWorkbook.ExportAsFixedFormat类型:=xlTypePDF,文件名:=loc 

这一行代码是为了将excel文件导出为PDF,并使其准备好打印。

 结束子程序 

这将结束该程序。

阅读更多。 用超链接将Excel导出到PDF(2种快速方法)

2.自动将活动工作表保存为PDF格式

让我们看看另一个例子,将活动的工作表打印成pdf,并自动保存文件名,使用 Excel VBA .

步骤。

  • 首先,去到 发展ope 从功能区中选择 "r "选项卡。
  • 第二,点击 视觉基础 以打开 Visual Basic编辑器 .
  • 另一种打开方式是 Visual Basic编辑器 是简单地按下 Alt + F11 .
  • 或者,在工作表上点击右键,然后选择 查看代码 .
  • 接下来,请到 插入 并选择 模块 从下拉菜单中选择。
  • 而且,这将打开Visual Basic窗口。
  • 之后,复制并粘贴 VBA代码 下面。

VBA代码。

 Sub Print_Sheet() Dim loc As String loc = "E:\Worksheet.pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • 此外,按 F5键 或点击 运行子 按钮来运行该代码。

  • 与前面的例子一样,文件被保存为PDF,文件名是自动的。

如果你阅读 示例1的 代码解释,你也会明白这一点。

阅读更多。 Excel宏:将文件名中的日期保存为PDF (4个合适的例子)

3.用VBA在范围内从Excel打印PDF文件

让我们来看看另一个利用Excel VBA将活动表打印成pdf并自动保存文件名的例子。

步骤。

  • 要开始,请点击 开发商 选项卡上。
  • 第二,启动 Visual Basic编辑器 通过点击 视觉基础 .
  • 或者,你可以访问 Visual Basic编辑器 通过按 Alt + F11 .
  • 或者。 右键点击 在工作表上,选择 查看代码 从菜单中选择。
  • 接下来,选择 模块 下的下拉框中选择 插入 .
  • 然后会出现Visual Basic窗口。
  • 把代码写在那里。

VBA代码。

 Sub PrntPDF() ActiveWindow.SelectedSheets.PrintOut Copies:=1, _ Collate:=True, ActivePrinter:="Adobe PDF" Dim fnam As String fnam = Range("B4") .Value End Sub 
  • 最后,按 F5键 来运行该代码。

  • 之后,你可以看到一个名字为Workbook的PDF文件已经被添加到你电脑上的那个位置。 因此,文件名被自动保留了。

阅读更多。 在Excel中用VBA打印范围到PDF(5个最简单的例子)。

4.用Excel VBA在选定的工作表上进行循环并打印PDF文件

让我们看一看另一种打印成PDF并自动保存文件名的方法。

步骤。

  • 要开始,打开功能区并选择 开发商 选择。
  • 然后,要访问 Visual Basic编辑器 ,点击 视觉基础 .
  • 按压 Alt + F11 也将调出 Visual Basic编辑器 .
  • 或者说。 右键点击 的工作表,并选择 查看代码 从出现的菜单中选择。
  • 现在,从 插入 下拉选项,选择 模块 .
  • 然后复制并粘贴 VBA 下面的代码。

VBA代码。

 Sub PrntPDF1() Dim wrksht As Worksheet Dim sht As Variant Set sht = ActiveWindow.SelectedSheets For Each wrksht In sht wrksht.Select wrksht.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=ThisWorkbook.Path & "/" & wrksht.Name & ".pdf" Next wrksht sht.Select End Sub 
  • 运行代码,按 F5 钥匙。

  • 最终,你可以看到一个工作簿PDF文件已经被上传到你的电脑上的那个区域。 因此,文件名被自动保留。

这将把文件保存为工作簿的工作表号。

VBA代码解释

 For Each wrksht In sht wrksht.Select wrksht.ExportAsFixedFormat Type:=xlTypePDF, filename:=ThisWorkbook.Path & "/" & wrksht.Name & ".pdf" Next wrksht 

for循环的这行代码是为了将excel文件导出为pdf文件,并打印该文件。

阅读更多。 Excel VBA:ExportAsFixedFormat PDF with Fit to Page (3 例)

5.打印成PDF并在Excel中本能地保存文件名

现在,看看另一种Excel VBA方法,用于将excel文件保存为pdf并自动系统命名的文件。

步骤。

  • 要开始,打开功能区,选择 开发商 从下拉菜单中选择。
  • 然后,选择 视觉基础 以打开 Visual Basic编辑器 .
  • ǞǞǞ Visual Basic编辑器 也可以通过按 Alt + F11 .
  • 或者,你可以 右键点击 的纸张,并选择 查看代码 从弹出的菜单中选择。
  • 之后,选择 模块 插入 下拉菜单。
  • 此外,复制并粘贴以下VBA代码。

VBA代码。

 Sub PrntPDF2() Dim loc As String loc = "E:\Sheet6.pdf" ActiveSheet.ExportAsFixedFormat _ Type:=xlTypePDF, _ filename:=loc, _ OpenAfterPublish:=False, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ Quality:=xlQualityStandard, _ From:=1, To:=2 End Sub 
  • 最后,运行代码,按 F5 在你的键盘上,你会看到结果。

  • 随后你会看到,一个 工作手册PDF 因此,文件名会自动保留。

同样,像前面的例子一样,这也会把pdf文件保存为纸张编号。

VBA代码解释

 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=loc, OpenAfterPublish:=False, IncludeDocProperties:=True, IgnorePrintAreas:=False, Quality:=xlQualityStandard, From:=1, To:=2 

该代码块用于打印和保存excel文件为pdf文件。

阅读更多。 在Excel中使用VBA打印到PDF和电子邮件(2个实用案例)

6.VBA函数自动打印PDF并保存文件名

让我们来探索另一种Excel VBA打印到PDF并自动保存文件名的方法。 在这个例子中我们将使用一个函数并将文件保存为PDF。 我们还使用了 女士信箱 来给我们提供一个文件是否被保存的信息。

步骤。

  • 在开始的时候,去到 开发商 标签> 视觉基础 > 插入 > 模块 .
  • 或者。 右键单击 在工作表上,将打开一个窗口。 从那里到 查看代码 .
  • 而且,这将带你到 Visual Basic编辑器 领域,在这里我们可以写出 VBA宏 .
  • 另一方面,按 Alt + F11 也将打开 Visual Basic编辑器 .
  • 之后,输入 VBA 代码。

VBA代码。

 Sub PrntPDF3() Dim wrks As Worksheet Dim wrkb As Workbook Dim snam As String Dim sloc As String Dim sf As String Dim slocf As Variant Dim l As Long On Error GoTo errHandler Set wrkb = ActiveWorkbook Set wrks = ActiveSheet sloc = wrkb.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrks.Range("A1").Value & " Print " &wrks.Range("A2").Value & " PDF " & wrks.Range("A3").Value sf = snam & ".pdf" slocf = sloc & sf If PrintFile(slocf) Then l = MsgBox(vbQuestion + vbYesNo, "File Exists") If l vbYes Then myFile = Application.GetSaveAsFilename(InitialFileName:=slocf, FileFilter:="PDF Files (*.pdf), *.pdf", _ Title:="Save File Name" ) if myFile "False" Then slocf = myFile Else GoTo exitHandler End IfEnd If End If wrks.ExportAsFixedFormat Type:=xlTypePDF, filename:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False MsgBox "Print PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "not Print" Resume exitHandler End Sub Function PrintFile(rsFullPath As String) As Boolean PrintFile =CBool(Len(Dir$(rsFullPath))> 0) End Function 
  • 然后,运行代码,看结果,按一下 F5键 .

  • 这将出现在 女士信箱 并确保PDF文件现在可以打印了。

  • 同样,和以前一样,你会注意到一个工作簿PDF文件已经被保存在你的电脑上的那个位置。 因此,文件名被默认保留了。 由于我们设置了文件名 打印PDF ,它保存的文件名是 印刷品 PDF。

如果你看一下前面的代码解释,你会正确理解代码的行数。 你不需要改变代码,只需根据你的喜好改变范围。 你可以复制代码并用于你的工作目的。

阅读更多。 从单元格值中提取文件名保存为PDF的Excel宏(2例)

7.Excel VBA代码打印成PDF并自动保存文件名

让我们看看另一种Excel VBA方法,用于打印成PDF并自动存储文件名。

步骤。

  • 要开始,请导航到 开发商 选项卡上。
  • 第二,在代码部分,选择 愿景 来启动 Visual Basic编辑器 要打开 Visual Basic编辑器 ,点击 Alt + F11 .
  • 或者,你可以在你的工作表上点击右键,选择 查看代码 这将带你到 Visual Basic编辑器 也是如此。
  • 这将显示在 Visual Basic编辑器 ,在这里我们将编写代码,从一个范围内生成一个表。
  • 第三,从 "插入 "下拉菜单栏,选择 模块 .
  • 并且,复制并粘贴 VBA 代码如下所示。

VBA代码。

 Sub PrintPDF4() Dim wrksht As Worksheet Dim wrkbk As Workbook Dim snam As String Dim sloc As String Dim sf As String Dim slocf As String Dim file As Variant On Error GoTo errHandler Set wrkbk = ActiveWorkbook Set wrksht = ActiveSheet sloc = wrkbk.Path If sloc = "" Then sloc = Application.DefaultFilePath End If sloc = sloc & "\" snam = wrksht.Range("A1").Value & " - " &wrksht.Range("A2").Value & " - " & wrksht.Range("A3").Value sf = snam & ".pdf" slocf = sloc & sf wrksht.ExportAsFixedFormat Type:=xlTypePDF, filename:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False MsgBox "Print PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "不打印" ResumeexitHandler End Sub 
  • 然后,通过点击执行代码 擦肩而过 按钮或点击 F5 键盘快捷键。

  • 那么,特别是,一个 女士信箱 将会出现。

  • 该文件被保存为PDF,其自动文件名与前面的例子中相同。

VBA代码解释

 sloc = wrkbk.Path 如果sloc = "" 那么sloc = Application.DefaultFilePath End If sloc = sloc & "/" snam = wrksht.Range("A1").Value & " - " & wrksht.Range("A2").Value & " - " & wrksht.Range("A3") . 

这些是为了在工作簿被保存的情况下获得活动的工作簿文件夹。

 sf = snam & ".pdf" slocf = sloc & sf 

这将创建保存文件的默认名称。

 wrksht.ExportAsFixedFormat Type:=xlTypePDF, filename:=slocf, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

该块只是将excel文件导出到当前文件夹中的PDF。

 MsgBox "Print PDF: " & vbCrLf & strPathFile exitHandler: Exit Sub errHandler: MsgBox "not Print" Resume exitHandler 

这将使我们能够在微软Excel中看到一个带有文件信息的确认信息。

阅读更多。 在Excel中使用宏按钮打印成PDF(5个宏变体)

8.用自动文件名打印一个特定的Excel工作表

让我们来看看一个不同的Excel VBA方法,用于打印成PDF并自动存储文件名。

步骤。

  • 首先,选择 开发商 选项卡。
  • 第二,根据 编码 类别,选择 视觉基础 来启动 Visual Basic编辑器 或者,按 符号 + F11 来启动 Visual Basic编辑器 .
  • 相反,在你的工作表上点击右键,选择 查看代码 .
  • 这将显示在 Visual Basic编辑器 ,在这里我们将编写代码,从一个范围生成一个表。
  • 第三,从插入下拉菜单栏中选择模块。
  • 此外,复制并粘贴 VBA代码 下面。

VBA代码。

 Sub PrintPDF5() Dim loc As String Dim r As Range loc = "E:\PDF File.pdf" Set rng = Sheets("IT").Range("A1:F13") rng.ExportAsFixedFormat Type:=xlTypePDF, _ filename:=loc End Sub 
  • 此外,通过点击运行代码 擦肩而过 按钮或使用 F5 键盘快捷键。

  • 这个文件被保存为PDF,其名称与前面的例子非常相同。

VBA代码解释

 Dim loc As String Dim r As Range loc = "E:\PDF File.pdf" Set rng = Sheets("IT") .Range("A1:F13") 

这些代码块是用来创建和分配变量的。

 rng.ExportAsFixedFormat类型:=xlTypePDF, _文件名:=loc 

这将把一系列的文件数据保存为PDF。

阅读更多。 如何转换Excel到PDF而不丢失格式(5个有效的方法)。

9.在Excel VBA中打印成PDF时以自动方式保存文件名

让我们来看看另一种Excel VBA方法,用于打印成PDF并自动存储文件名。

步骤。

  • 首先,选择 开发商 选项卡。
  • 第二,挑选 视觉基础 编码 区域,以打开 Visual Basic编辑器 .点击 符号 + F11 来启动 Visual Basic编辑器 .
  • 你也可以在你的工作表上点击右键,选择 查看代码 这也将带你到 Visual Basic编辑器 .
  • 现在,我们可以看到 Visual Basic编辑器 在这里,我们将编写代码,从一个范围创建一个表。
  • 此外,选择 模块 插入 下拉菜单栏。
  • 然后,复制并粘贴 VBA 下面的代码。

VBA代码。

 Sub Prnt_PDF() Call Automatic_Name End Sub Function Automatic_Name() As Boolean ' 将工作表复制到新的PDF文件中用于发送电子邮件 Dim sht As String, file As String, loc As String Dim s As String Application.ScreenUpdating = False sht = ActiveSheet.Name file = ActiveWorkbook.Name loc = ActiveWorkbook.Path s = loc & "\" & sht & ".pdf" On Error Resume NextActiveSheet.PageSetup.PrintQuality = 600 err.Clear On Error GoTo 0 On Error GoTo RefLibError ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=s, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True On Error GoTo 0 SaveOnly: MsgBox "保存为.pdf文件:" & vbCrLf & vbCrLf & SvAs & _ "审查.pdf文档。"Automatic_Name = True GoTo EndMacro RefLibError: MsgBox "Unable to save as PDF." Automatioc_Name = False EndMacro: End Function 
  • 然后,该代码将通过点击执行 擦肩而过 按钮或使用 F5 键盘快捷键。

VBA代码解释

 sht = ActiveSheet.Name file = ActiveWorkbook.Name loc = ActiveWorkbook.Path s = loc & "\" & sht & ".pdf" 

对于得到的文件为pdf,并保存pdf的名称。

 On Error Resume Next ActiveSheet.PageSetup.PrintQuality = 600 err.Clear On Error GoTo 0 

这只是设置打印质量。

 On Error GoTo RefLibError ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=s, Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True On Error GoTo 0 SaveOnly: MsgBox "保存为.pdf文件:" & vbCrLf & vbCrLf & SvAs & _ "审查.pdf文档。" Automatic_Name = True GoTo EndMacro RefLibError: MsgBox "无法保存为PDF。" Automatioc_Name = False 

这些行将指示用户如何发送文件,将其打印成pdf文件。

阅读更多。 如何保存Excel为PDF不切断(4个合适的方法)

总结

上述方法将帮助你从以下方面进行这项工作 在Excel VBA中打印成PDF并自动保存文件名 我希望这对你有帮助!如果你有任何问题、建议或反馈,请在评论区告诉我们。 或者你可以看一下我们的其他文章。 淘宝网 博客!

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.