Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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,我正在尝试循环浏览所有活动的工作表,并将它们保存为单独的PDF dim ws as worksheet dim path as string ... For Each ws In ActiveWindow.SelectedSheets ws.ExportAsFixedFormat _ xlTypePDF, _ Filename:=path & ws.Name, _ Quality:=xlQualityStandard, _

我正在尝试循环浏览所有活动的工作表,并将它们保存为单独的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文件的内容都是相同的。它是每次打印的活动页,但文件名不同

如何解决这个问题?请记住,我只希望打印选定的图纸

编辑:我太新了,不能投票。谢谢你的回答

打印前需要选择纸张。
Option Explicit

Sub Save_SelectedSheets_AsPdf()

Dim ws As Worksheet
Dim path As String
Dim actSheet As Worksheet
'...
Set actSheet = ActiveSheet
For Each ws In ActiveWindow.SelectedSheets
    ws.Select
    ws.ExportAsFixedFormat _
        xlTypePDF, _
        Filename:=path & ws.Name, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenafterPublish:=False
Next
actSheet.Select
End Sub

Sub Create_5_Sheets_and_name_them()
    Dim iCt As Integer
    For iCt = 2 To 5
        Sheets.Add after:=Sheets(Sheets.Count)
        ActiveSheet.Name = "Sh" & iCt
        Range("A1").Value = ActiveSheet.Name
    Next iCt
End Sub
只需在ws.ExportAsFixedFormat之前添加命令ws.Select,它就会工作:

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.screenUpdate=False,然后在循环结束时将其设置回Application.screenUpdate=True。 提示2:为了方便用户,您可以在循环开始时使用Dim currentlySelectedSheet作为工作表获取当前活动的工作表:设置currentlySelectedSheet=ActiveSheet,循环结束时,您只需使用currentlySelectedSheet将其重新选择。选择此选项,以便用户在运行宏时不会在屏幕上看到任何更改。
在将其导出为pdf之前,可以这样指定它

打印区域可能有问题?是的,添加ws.select有效!我没想到这是必要的。谢谢你给我的其他建议。很好的触摸将用户放回到他们开始的地方。谢谢。我认为第二个子项是创建选项卡来测试第一个子项?