打印除3张特定纸张外的所有工作簿中的纸张

除了三个特定的名为“Front Page”,“Data”和“Logs”的工作簿之外,我想打印我正在工作的工作簿中的所有工作表。 我已经尝试了一个“和” – 和一个“或” – 陈述和包裹括号,没有任何工作。

代码如下:

Sub printsheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Front Page" And _ ws.Name <> "Data" And _ ws.Name <> "Logs" Then ws.PrintOut End If Next ws End Sub 

看起来您的工作簿中隐藏了工作表。

打印之前,您需要取消隐藏它们,或检查工作表是否隐藏。 手动或者(特别是如果您的工作表是用xlSheetVeryHidden编程隐藏的):

 ws.Visible = xlSheetVisible ' ADD THIS LINE TO UNHIDE A SHEET ws.PrintOut 

要么

 If ws.Visible = xlSheetVisible Then ws.PrintOut End if 

如果你不想打印出隐藏的工作表,试试这样的事情:

 Sub printsheets() Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets If ws.Visible = True Then If ws.Name <> "Front Page" And _ ws.Name <> "Data" And _ ws.Name <> "Logs" Then With ws.PageSetup .PrintArea = "b2:g26" ' USE YOUR PRINTAREA .Zoom = False .FitToPagesTall = 1 .FitToPagesWide = 1 End With ws.PrintOut End If End If Next ws End Sub 

您也可以使用您不想打印的表单使用一个列表

 Sub printsheets() Dim dontPrint As Object Dim ws As Worksheet Set dontPrint = CreateObject("Scripting.Dictionary") dontPrint.Add "Front Page", 1 dontPrint.Add "Data", 2 dontPrint.Add "Logs", 3 For Each ws In ActiveWorkbook.Worksheets If dontPrint.Exists(ws.Name) Then Else ws.PrintOut End If Next ws End Sub