我在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新手,所以任何帮助真的很感激!!
答案 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