首页 > 解决方案 > 仅打印选定的工作表...但活动工作表继续打印

问题描述

我正在尝试遍历所有活动工作表并将它们另存为单独的 PDF。

dim ws as worksheet
dim path as string
...
For Each ws In ActiveWindow.SelectedSheets
    ws.ExportAsFixedFormat _
        xlTypePDF, _
        Filename:=path & ws.Name, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenafterPublish:=False
Next

它有点工作:

为正确文件夹中的每个选定工作表创建一个 PDF 文件...但是...

这些PDF文件的内容都是一样的。它是每次打印的活动表,但文件名不同。

如何解决这个问题?请记住,我只想打印选定的工作表。

编辑:我太新了,无法投票。感谢您的回答!

标签: excelvba

解决方案


您需要Select在打印之前将工作表。ws.Select只需在之前添加命令ws.ExportAsFixedFormat,它就会起作用:

For Each ws In ActiveWindow.SelectedSheets
    ws.Select '<-- the only thing you have to add.
    ws.ExportAsFixedFormat _
        xlTypePDF, _
        Filename:=path & ws.Name, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenafterPublish:=False
Next

除此之外:

  • 提示 1:为避免看到纸张反复跳跃,您可以Application.ScreenUpdating = False在循环开始之前添加,然后将其设置回Application.ScreenUpdating = True循环结束时。
  • 提示 2:为了用户友好,您可以在循环开始时获取当前活动的工作表,Dim currentlySelectedSheet As Worksheet: Set currentlySelectedSheet = ActiveSheet当循环结束时,您只需将其选择回来,currentlySelectedSheet.Select以便用户在运行宏时不会在屏幕上看到任何变化.

推荐阅读