Excel宏以选择某些工作表并打印到一个pdf

时间:2015-02-17 14:44:54

标签: excel vba excel-vba pdf

我在Excel 2007中有一个excel工作簿,它有大约110个单独的工作表。

我希望有一个菜单页面,用户可以对他们想要的工作表的标题说“是”或“否”,然后按一个按钮运行一个宏,然后选择用户也说过Y的工作表,然后打印它们是PDF格式的PDF格式而不是单个PDF格式。

我目前有以下代码选择工作表并打印它们。目前,虽然当我选择PDF打印机时,它会打印但只能打印多个PDF而不是一个PDF。

Sub Printselection()
Dim rng As Range
Dim wks As Worksheet
For Each rng In Sheets("RA Database").Range("Q6:Q119")
    If Trim(rng.Value) <> "" Then
        On Error Resume Next
        Set wks = Nothing
        Set wks = Sheets(rng.Value)
        On Error GoTo 0
        If wks Is Nothing Then
            MsgBox "Sheet " & rng.Value & " does not exist"
        Else
             Application.Dialogs(xlDialogPrinterSetup).Show
             wks.PrintOut
        End If
    End If
Next rng
End Sub

硬拷贝我很高兴它能像这样工作,但我们需要整理PDF副本。

我是一个VB新手,所以任何帮助真的很感激!!

1 个答案:

答案 0 :(得分:0)

要将所有工作表打印到PDF文件中,您需要将要打印的所有工作表名称存储到数组中,然后使用以下命令。

Worksheets(printSheets).PrintOut Preview:=False, ActivePrinter:="Adobe PDF", PrintToFile:=True, PrToFileName:=PSFileName

其中printSheets是包含您要打印的工作表名称的数组

编辑:

这对你有用

Sub Printselection()
    Dim rng As Range
    Dim wks As Worksheet
    Dim arr() As String
    Dim i As Long: i = 0
    For Each rng In Sheets("RA Database").Range("Q6:Q119")
        If Trim(rng.Value) <> "" Then
            On Error Resume Next
            Set wks = Nothing
            Set wks = Sheets(rng.Value)
            On Error GoTo 0
            If wks Is Nothing Then
                MsgBox "Sheet " & rng.Value & " does not exist"
            Else
                ReDim Preserve arr(i)
                arr(i) = wks.Name
                i = i + 1
            End If
        End If
    Next rng
    Dim printSheets As Variant
    printSheets = arr
    Worksheets(printSheets).PrintOut Preview:=False, ActivePrinter:="Adobe PDF", PrintToFile:=True, PrToFileName:=PSFileName
End Sub