【问题标题】:Excel VBA export and append to PDFExcel VBA 导出并附加到 PDF
【发布时间】:2017-09-27 05:31:50
【问题描述】:

我正在寻求一些帮助来解决保存到 PDF 的问题。我有一张纸,其中包含一些打印在 2 页上的信息。此表上显示的信息由下拉选项控制,可从数百个选项中选择一个。我有一个打印到 PDF 功能,对于显示的信息的单一视图工作正常,所以我使用下拉菜单选择 1 个选项,然后单击保存到 PDF 按钮,这一切都很好。

我需要添加第二个函数,它将遍历下拉框中的所有可用选项,并将所有这些添加到要保存的单个 PDF 中。我可以处理循环中的所有标准代码,但是如何在循环中构建 PDF 文件。我知道如何构建一组工作表以导出到单个 PDF,但这种“循环内”功能是我正在努力寻找答案的东西。

有人可以帮忙吗?如果您需要更多信息,请尽管询问。

谢谢

【问题讨论】:

  • -1 这将高度依赖于应用程序。也就是说,您将需要发布一些代码以明确您现在在做什么,以及为什么它不起作用。一般来说,Excel 会将您拥有的任何内容导出为 PDF。如果您想导出多个“视图”等,您需要将它们全部放在一个地方并进行单个 PDF 导出。这通常涉及创建帮助表/工作簿。或者,您可以使用 Excel 创建多个 PDF,然后使用其他工具将它们组合起来。没有办法使用 Excel“附加到 PDF”。
  • 将尝试使用帮助表/工作簿,但感觉这可能会占用超过 400 条记录。我找到了一个合并 PDF 的示例,因此我还将尝试创建单个 PDF 并使用此方法合并它们。我认为第二种选择可能要快得多,但根本不确定。拜伦,有没有什么聪明的方法可以快速制作帮助表/工作簿选项并对其进行优化?不确定这里有什么协议。一旦我开始工作,我会发布我的代码吗,因为我还没有任何代码可以发布。无论如何,我会建议我选择什么选项以及为什么。我正在使用 Excel 2013,Adobe 10 标准
  • Re: 400 张,你可能会对 Excel 的处理能力感到惊讶。我肯定会把它们放在一个新的/空白的工作簿中,这样你就不会污染你的源工作簿。我已经在一些相当密集的事情上使用了这种技术,而且它往往会奏效。可能值得测试一下它是否可以运行这么多,然后如果它太慢或无法运行,则对其进行优化。更有可能的是,它会运行得很好,你会完成的。
  • Re: 发布代码,Stack Overflow 是一个编程问答网站。当问题是“请为我写一个完整的解决方案”时,人们(包括我)往往不太有帮助。我认为这不是您的意图,但这很常见。当您正在寻找一些开始的技巧时,这很困难,这就是这些 cmets 的用途。如果您对此代码进行了尝试并遇到了障碍,请使用新代码更新您的问题。一旦明确您已经尝试并知道自己的目标,您就会从愿意帮助您解决问题的人那里得到更强烈的回应。
  • 谢谢拜伦。明天将根据您的建议实施。建议表示赞赏,你是对的,我绝对不是在寻找任何人给我一个现成的解决方案,这没有乐趣!会回复我的进展情况,在你最后一次参加比赛之后,我对我的表现问题更有信心。干杯

标签: vba excel


【解决方案1】:

在解决方案中,假设我们有一个名为:Table2 的表。 我们还有一个帮助表(用于存储过滤后的表),它是隐藏的,名为:Help。

Option Explicit

Sub print_to_pdf()
    Dim sh  As Long
    Dim rg  As Range
    Dim Rng As Range
    Dim rw  As Range

    Application.ScreenUpdating = False

    For Each rw In Range("Table2[#All]").Rows

        If rw.EntireRow.Hidden = False Then
            If Rng Is Nothing Then Set Rng = rw
            Set Rng = Union(rw, Rng)
        End If

    Next

    Rng.Copy

    With Sheets("help")
        .Visible = True
         sh = .Cells(Rows.Count, "A").End(xlUp).Row + 2
        Set rg = Range("a3" & ":" & "a" & sh - 2)

        .Activate
        .Cells(sh, "A").Select
        ActiveSheet.Paste

        ActiveSheet.PageSetup.PrintArea = rg

        ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\rep.pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False

        .Visible = False
    End With

    Application.ScreenUpdating = True

    MsgBox "Your PDF Has been Created with Success!!", vbInformation
End Sub

您可以在帮助表中附加数据,然后导出 pdf。

参考:https://stackoverflow.com/questions/

【讨论】:

  • 您逐字复制了链接的答案,尽管它在此示例中仅略微适用。由于他想要导出的 Range 的基础内容正在发生变化,因此发布的代码将无法根据 OP 的描述工作。也就是说,通过 Union 构建 Range 并进行一次复制/粘贴在这里没有帮助。
  • 这很复杂,是一种将内容附加到pdf的方法。
猜你喜欢
  • 2017-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
相关资源
最近更新 更多