2017-09-26 168 views
1

我正在寻找一些解决PDF问题的帮助。我有一张表格,其中包含一些可在2页上打印的信息。此表中显示的信息由下拉选项控制,以选择几百个选项中的一个。我有一个PDF打印功能,可以正常显示所显示信息的单个视图,因此我使用下拉菜单选择1个选项,然后单击保存到PDF按钮,这一切都很好。Excel VBA导出并附加到PDF

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

任何人都可以帮忙吗?如果您需要更多信息,请直接询问。

谢谢

+0

-1这将是高度依赖于应用。也就是说,你需要发布一些代码来明确你现在正在做什么,以及为什么它不起作用。一般来说,Excel会将任何你想要的东西导出到PDF中。如果你想导出多个“视图”等,你将需要在一个地方得到所有的人,并做一个PDF导出。这通常涉及创建帮助表/工作簿。或者,您可以使用Excel创建多个PDF,并使用其他工具将其合并。使用Excel无法“附加到PDF”。 –

+0

会尝试使用帮助表/工作簿,但感觉这可能是密集的超过400条记录。我找到了合并PDF的例子,所以我也会尝试创建单独的PDF并使用这种方法合并它们。我认为第二种选择可能会快得多,但根本不确定。有没有什么聪明的方法让助手床单/工作簿选项快速优化呢,拜伦?不知道什么协议在这里。我是否会在我的代码发布后发布我的代码,因为我没有任何代码可以发布。无论如何,我会建议我选择什么选项以及为什么。我正在使用Excel 2013,Adobe 10标准 – nelly2000

+0

Re:400张表格,您可能会对Excel能够处理的内容感到惊讶。我肯定会把它们放在一个新的/空白的工作手册中,这样你就不会污染你的源工作簿。我在一些相当密集的事情上使用了这种技术,并且它倾向于工作。可能值得进行测试,看看它是否会运行这么多,然后如果速度太慢或无法运行,则优化它。更可能的是,它会运行得很好,你就会完成。 –

回答

0

在解决方案中,假设我们有一个名为Table2的表。 我们还有一个帮助表(用于存储过滤的表),它是Hiden并命名为: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/

+1

尽管在本例中它仅适用于某些情况,但您已逐字复制链接的答案。由于他希望导出的范围的基础内容正在改变,因此发布的代码将不会基于OP的描述工作。也就是说,通过Union建立一个Range并且做一个复制/粘贴在这里不会有帮助。 –

+0

这很复杂,是一种将内容附加到pdf的方法。 – mgae2m