将工作表保存为PDF

我有这个问题,试图在一个PDF中打印多个工作表。 在网上浏览和在论坛上,我发现这个代码,但是当我使用它,我得到错误9“下标超出范围”,我不明白为什么。 我试了一个新的工作簿的代码,它正常工作。 有人能帮我吗?

Private Sub cmd_PrintPDF_Click() ThisWorkbook.Sheets(Array("Costs", "Cars")).Select Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ ThisWorkbook.Path & "/" & "Cost&Car", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub 

这个macros从我的工作簿的主面板运行,其中有各种命令button,引导你在请求的工作表。当我运行这个macros表“汽车”隐藏,可能是这个问题? 我在代码之前尝试使用.Activate,但它仍然不起作用。

我使用这个代码导出到PDF格式。 也许会对你有用。

 Sub SheetsToPdf() Dim Arr() As String Dim PdfFileName As String PdfFileName = "Cost&Car" ReDim Arr(1, 1) 'sheets name in 1st column, 2nd column for info about visibility sheets Arr(0, 0) = "Costs" Arr(1, 0) = "Cars" Cells(1, 1).Select For i = LBound(Arr, 1) To UBound(Arr, 1) Arr(i, 1) = ThisWorkbook.Sheets(Arr(i, 0)).visible ' info about visibility sheets If Arr(i, 1) = "0" Then 'check visible Sheets "-1" - visible = True, "0" - visible = False ThisWorkbook.Sheets(Arr(i, 0)).visible = True OrgVisible = False End If If i = 0 Then ThisWorkbook.Sheets(Arr(i, 0)).Select Else ThisWorkbook.Sheets(Arr(i, 0)).Select False 'select all sheets with names in arr() End If Next i 'select all data Cells.Select 'export to pdf Selection.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ ThisWorkbook.path & "/" & PdfFileName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True 'restore old visibility for sheets For i = LBound(Arr, 1) To UBound(Arr, 1) If Arr(i, 1) = "0" Then 'set old visible ThisWorkbook.Sheets(Arr(i, 0)).visible = False End If Next i End Sub 

也许这个更简单的版本,你需要? 只导出可见的工作表:

 Sub SheetsToPdf2() Dim PdfFileName As String PdfFileName = "Cost&Car" Cells(1, 1).Select For Each Sheets_ In Sheets If Sheets_.visible Then ThisWorkbook.Sheets(Sheets_.Name).Select False End If Next 'select all data in one sheet Cells.Select 'export to pdf Selection.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ ThisWorkbook.path & "/" & PdfFileName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub 

事实上,你不能打印一个隐藏的表格这里是你的代码没有无用的和资源 – 贪婪Select

 Private Sub cmd_PrintPDF_Click() ThisWorkbook.Sheets("Costs").Visible = True ThisWorkbook.Sheets("Cars").Visible = True ThisWorkbook.Sheets(Array("Costs", "Cars")).ExportAsFixedFormat _ Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & "/" & "Cost&Car", _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=True ThisWorkbook.Sheets("Costs").Visible = False ThisWorkbook.Sheets("Cars").Visible = False End Sub