【问题标题】:Saving as PDF through VBA corrupts the file通过 VBA 保存为 PDF 会损坏文件
【发布时间】:2019-07-23 06:42:07
【问题描述】:

我很难确定这个问题。我有一个宏,可以在工作簿中选择多个工作表并将其保存为 PDF。该文件被正确放置在文件夹中,有时它甚至可以正确打开。但是,大多数时候 PDF 已损坏并给我以下错误。

当它工作时我无法复制实例。 “MSPG 图表”工作表是一个图表工作表,即我将一个图表移动到它自己的名为“MSPG 图表”的工作表中。。如果我手动保存文件,它可以工作。

以下是我使用的代码: NewPathAssembly 是我的保存路径,按预期工作。

Sub Create_PDF_StandAlone()

Dim NewPathAssembly as String, Name as String
Dim PDFName as Variant

On Error GoTo ErrLine

NewPathAssembly = "C:\"
Name = "B2110 - xx_30 - MS Peergroup"
PDFName = InputBox("Enter PDF name here.", "PDF title", Name)

   Sheets(Array("Overview", "MSPG Chart")).Select

    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False, PrToFilename:= _
    NewPathAssembly & PDFName & ".pdf"

Sheets(1).Select


Exit Sub

ErrLine: MsgBox "Please close the current PDF file"

End Sub

【问题讨论】:

  • 我为不同的工作表尝试了 3 次代码。甚至没有一次显示错误。您能否分享显示错误的文件,因为如果我们无法复制它,将很难纠正它。
  • 一个意见,如果你想在变量中保存一些字符串,不要使用Default,因为它是一个关键字。将其更改为defanm 等。
  • @mikku 我想我只是过分热心地声明我的变量。我删除了声明,因为正如您所说,它是 InputBox 中使用的关键字,在此设置中按预期工作。

标签: excel vba pdf


【解决方案1】:

添加参数ActivePrinter:="Microsoft Print To PDF" 工作。看来,由于它默认使用另一台打印机,因此它以某种方式损坏了文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2023-04-10
    • 2023-03-24
    相关资源
    最近更新 更多