Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在工作簿中打印一些隐藏的和一些未隐藏的工作表_Excel_Vba - Fatal编程技术网

Excel 在工作簿中打印一些隐藏的和一些未隐藏的工作表

Excel 在工作簿中打印一些隐藏的和一些未隐藏的工作表,excel,vba,Excel,Vba,我已经设置了一个按钮来打印工作簿中的一些工作表,但我想隐藏一些工作表,但仍然打印它们。如何更改以下代码,使其混合打印隐藏和未隐藏的工作表 Private Sub PrintNew_Click() If Sheets("New").Range("email").Value <> "email" And ActiveSheet.Name = "New" Then Cancel = True MsgBox "Email Address Needs to be Completed", vbI

我已经设置了一个按钮来打印工作簿中的一些工作表,但我想隐藏一些工作表,但仍然打印它们。如何更改以下代码,使其混合打印隐藏和未隐藏的工作表

Private Sub PrintNew_Click()
If Sheets("New").Range("email").Value <> "email" And ActiveSheet.Name = "New" Then
Cancel = True
MsgBox "Email Address Needs to be Completed", vbInformation
If response = vbCancel Then Exit Sub
Application.EnableEvents = True
response = MsgBox("Do you really want to print?", vbOKCancel)
If response = vbCancel Then Exit Sub
Application.ScreenUpdating = False
Range("copy") = "Customer Copy"
Sheets("New").PrintOut copies:=1, Collate:=True
Sheets("Disclosure").PrintOut copies:=1, Collate:=True
Sheets("GAP").PrintOut copies:=1, Collate:=True
Sheets("TCF").PrintOut copies:=1, Collate:=True
Sheets("Legal").PrintOut copies:=1, Collate:=True
Range("copy") = "File Copy"
Sheets("New").PrintOut copies:=1, Collate:=True
Sheets("Disclosure").PrintOut copies:=1, Collate:=True
Sheets("GAP").PrintOut copies:=1, Collate:=True
Sheets("TCF").PrintOut copies:=1, Collate:=True
Sheets("Legal").PrintOut copies:=1, Collate:=True
Range("copy") = "Customer Copy"
End If
End Sub
Private子打印新建_单击()
如果Sheets(“New”).Range(“email”).Value“email”和ActiveSheet.Name=“New”,则
取消=真
MsgBox“需要填写电子邮件地址”,VBS信息
如果响应=vbCancel,则退出子系统
Application.EnableEvents=True
response=MsgBox(“是否确实要打印?”,vbOKCancel)
如果响应=vbCancel,则退出子系统
Application.ScreenUpdating=False
范围(“副本”)=“客户副本”
图纸(“新”)。打印副本:=1,校对:=True
表格(“披露”)。打印件:=1份,校对件:=True
表格(“间隙”)。打印副本:=1,校对:=True
图纸(“TCF”)。打印输出副本:=1,校对:=True
表格(“合法”)。打印件:=1份,校对件:=True
范围(“副本”)=“文件副本”
图纸(“新”)。打印副本:=1,校对:=True
表格(“披露”)。打印件:=1份,校对件:=True
表格(“间隙”)。打印副本:=1,校对:=True
图纸(“TCF”)。打印输出副本:=1,校对:=True
表格(“合法”)。打印件:=1份,校对件:=True
范围(“副本”)=“客户副本”
如果结束
端接头
我希望能够隐藏“披露”、“差距”、“TCF”和“法律”

提前谢谢你的帮助
John Davies

无论可见性设置如何,想要打印工作表列表的用户都可以尝试以下方法:

注意:打印两份副本(第一份为
客户副本
,第二份为
文件副本


关闭屏幕更新、打印、隐藏、打开屏幕更新对我来说毫无意义的错误。我希望提及的工作表始终保持隐藏,但提及的其他工作表应在工作簿中保持可见,这会有所帮助。当您关闭屏幕更新时,工作表的可见性将在屏幕上不可见。因此,一旦你完成了你需要做的事情,再次打开屏幕更新。没有人会知道在后台发生了什么。很抱歉,这是一个痛苦,但它不是屏幕更新,我需要的。上面提到的工作表已经隐藏了,因为我不希望它们的选项卡显示出来。其他图纸始终可见。我需要的是,当我点击按钮时,隐藏的工作表和可见的工作表正在打印。如果我隐藏提到的工作表并单击打印按钮,我会得到一个运行时错误,因为“1004”。是否有办法修改代码以便打印隐藏的工作表?当您关闭屏幕更新时,即使您取消隐藏工作表,也不会显示。因此,请取消隐藏这些表单,打印它们,然后再次隐藏它们。
Sub Wsh_Print()
Dim aWsh As Variant
Rem Array with name of all worksheets to be printed
aWsh = [{"New","Disclosure","GAP","TCF","Legal"}]
Dim Wsh As Worksheet, vWsh As Variant
Dim vxWshVisible As Variant, b As Byte
    Application.ScreenUpdating = False
    For b = 1 To 2
        For Each vWsh In aWsh
            Set Wsh = ThisWorkbook.Worksheets(vWsh)
            With Wsh
                .Range("copy") = Choose(b, "Customer Copy", "File Copy")
                vxWshVisible = .Visible                 'Record original worksheet visibility
                .Visible = xlSheetVisible               'Make worksheet visible
                .PrintOut IgnorePrintAreas:=False       'Print worksheet
                .Visible = vxWshVisible                 'Reset original worksheet visibility
                .Range("copy") = "Customer Copy"
    End With: Next: Next
    Application.ScreenUpdating = True
End Sub