使用 VBA Excel 中的 Workbook.PrintOut() 方法打印为 PDF 后获取位置或直接打开文件
Get location or directly open file after printing to PDF using Workbook.PrintOut() method in VBA Excel
我正在编写一个将整个工作簿导出到 PDF 文件的宏。
生成过程正常,但现在我想让它在完成后打开新生成的文件。问题是,由于文件名不是预定义的,我不能简单地使用它的路径和名称打开它。
我正在使用方法 PrintOut 生成之前 selected ActivePrinter 为“Microsoft Print to PDF”,或者如果发生错误,用户将被要求 select 手动使用Application.Dialogs(xlDialogPrinterSetup).Show
.
这是这部分的片段:
Call set_printer
ActiveWorkbook.PrintOut Copies:=1, PrintToFile:=True
... 其中 set_printer() 是:
Public Sub set_printer()
On Error GoTo problem_with_pdf_printer
Application.ActivePrinter = "Microsoft Print to PDF"
Done: Exit Sub
problem_with_pdf_printer:
MsgBox "There is a problem with the Microsoft Print to PDF printer." & Chr(13) & Chr(13) & _
"Select another one manually!", vbInformation, "Warning!"
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub
有没有办法在执行该方法后捕获新文件位置?我想到的另一个想法是自定义“select 文件位置”-对话可以帮助我预定义文件路径,但遗憾的是我不知道如何实现它。
非常感谢您,如果您有任何建议和想法,我将非常高兴!
转换为 pdf 似乎是可行的方法。
Sub test()
Dim Wb As Workbook
Dim fn As String
Set Wb = ThisWorkbook
ChDir ThisWorkbook.Path 'C:\yourpath
fn = "test.pdf"
fn = Application.GetSaveAsFilename(fn, FileFilter:="PDF Files,*.pdf")
Wb.ExportAsFixedFormat xlTypePDF, fn, OpenAfterPublish:=True
End Sub
我正在编写一个将整个工作簿导出到 PDF 文件的宏。
生成过程正常,但现在我想让它在完成后打开新生成的文件。问题是,由于文件名不是预定义的,我不能简单地使用它的路径和名称打开它。
我正在使用方法 PrintOut 生成之前 selected ActivePrinter 为“Microsoft Print to PDF”,或者如果发生错误,用户将被要求 select 手动使用Application.Dialogs(xlDialogPrinterSetup).Show
.
这是这部分的片段:
Call set_printer
ActiveWorkbook.PrintOut Copies:=1, PrintToFile:=True
... 其中 set_printer() 是:
Public Sub set_printer()
On Error GoTo problem_with_pdf_printer
Application.ActivePrinter = "Microsoft Print to PDF"
Done: Exit Sub
problem_with_pdf_printer:
MsgBox "There is a problem with the Microsoft Print to PDF printer." & Chr(13) & Chr(13) & _
"Select another one manually!", vbInformation, "Warning!"
Application.Dialogs(xlDialogPrinterSetup).Show
End Sub
有没有办法在执行该方法后捕获新文件位置?我想到的另一个想法是自定义“select 文件位置”-对话可以帮助我预定义文件路径,但遗憾的是我不知道如何实现它。
非常感谢您,如果您有任何建议和想法,我将非常高兴!
转换为 pdf 似乎是可行的方法。
Sub test()
Dim Wb As Workbook
Dim fn As String
Set Wb = ThisWorkbook
ChDir ThisWorkbook.Path 'C:\yourpath
fn = "test.pdf"
fn = Application.GetSaveAsFilename(fn, FileFilter:="PDF Files,*.pdf")
Wb.ExportAsFixedFormat xlTypePDF, fn, OpenAfterPublish:=True
End Sub