gpt4 book ai didi

excel - 选择多张纸一次打印

转载 作者:行者123 更新时间:2023-12-02 17:59:06 24 4
gpt4 key购买 nike

我正在尝试编写代码以在一个打印作业中打印一个文件中的多个工作表。

要打印的Sheet是动态创建的;它们的名称和页数每次都不同,但我知道我想打印工作簿中除 Keep1Keep2 之外的所有工作表(实际上有 7 个不同的工作表名称).

我想在一个作业中打印所有页的原因是它可能有很多页,这意味着漫长的等待和大量的打印作业弹出窗口。

为了实现上述目标,我想到创建一个我要打印的工作表的选择,然后订购打印。

我写了以下内容:

Sub printtest()

Dim arr As Variant, sht As Worksheet

arr = Array("Keep1", "Keep2")

Application.DisplayAlerts = False


For Each sht In ThisWorkbook.Worksheets
If Not UBound(Filter(arr, sht.Name, True, vbtruecompare)) >= 0 Then
With sht.PageSetup
.Zoom = False
.FitToPagesWide = 1
End With
sht.Select False
End If
Next sht

SelectedSheets.PrintOut

Application.DisplayAlerts = True

End Sub

运行代码后,我遇到了以下情况:

  1. sht.Select False 将每个满足条件的 Sheet 添加到当前选择中,但是由于按钮在事件工作表上 Keep1 此工作表是选择的一部分 (不应该):

enter image description here

  1. .FitToPagesWide = 1 对选择中的每个 Sheet 执行,但 .FitToPagesTall 也设置为 1(我想将其保持为 Automatic ,但不知道该怎么做。
  2. 我不知道如何在打印作业中正确引用所选内容。我试过:
  • sht.PrintOut 导致运行时错误 91(未设置对象变量或 With block 变量)。
  • SelectedSheets.PrintOut 导致运行时错误 424(需要对象)。

我的 vba 知识有限,我找不到一种方法来引用打印输出的选定页面。

感谢您对此进行调查并解释此方法的错误之处。

最佳答案

打印多个工作表

  • 您很少需要选择以下代码中显示的任何内容。
  • 它将工作表名称写入一个字典的键,它实际上是一个数组,并使用这个数组(键)来引用要打印的工作表。
Sub PrintTest()

Dim Exceptions() As Variant: Exceptions = Array("Keep1", "Keep2")

Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")

Application.DisplayAlerts = False

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets
If IsError(Application.Match(ws.Name, Exceptions, 0)) Then
With ws.PageSetup
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 2
End With
dict.Add ws.Name, Empty
End If
Next ws

ThisWorkbook.Worksheets(dict.Keys).PrintOut

Application.DisplayAlerts = True

End Sub

关于excel - 选择多张纸一次打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74877041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com