Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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
Vba Excel VBScript,用于在打印到另一个PDF之前关闭打开的和以前打印的PDF_Vba_Excel_Pdf_Vbscript - Fatal编程技术网

Vba Excel VBScript,用于在打印到另一个PDF之前关闭打开的和以前打印的PDF

Vba Excel VBScript,用于在打印到另一个PDF之前关闭打开的和以前打印的PDF,vba,excel,pdf,vbscript,Vba,Excel,Pdf,Vbscript,我正在用一段代码将工作表打印到一个PDF文件中。打开此PDF文件后,如果我尝试从同一excel文件再次打印到PDF,我会收到一个VB错误:“文档未保存”,调试将我带到代码中: ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _ strFilename & " " & wedate_text & " Time", Quality:=xlQualityStandard, _ Include

我正在用一段代码将工作表打印到一个PDF文件中。打开此PDF文件后,如果我尝试从同一excel文件再次打印到PDF,我会收到一个VB错误:“文档未保存”,调试将我带到代码中:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
    strFilename & " " & wedate_text & " Time", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
以下是代码:

Sub PrintAnadarkoTicketsToPDF()
Worksheets("Cover").Visible = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
Dim strFilename As String
Dim rngRange As Range
Dim wedate As Date
Dim wedate_text As String
Set rngRange = Worksheets("Cover").Range("A5")
strFilename = rngRange.Value
wedate = Worksheets("Cover").Range("B24").Value
wedate_text = Format$(wedate, "mm.dd.yyyy")
Dim myArray() As Variant
    Dim i As Integer
    Dim j As Integer
    j = 0
    For i = 1 To Sheets.Count
        If Sheets(i).Visible = True Then
            ReDim Preserve myArray(j)
            myArray(j) = i
            j = j + 1
        End If
    Next i
    Sheets(myArray).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
    strFilename & " " & wedate_text & " Time", Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
Worksheets("Cover").Visible = True
Sheets(1).Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True
End Sub
我的问题是:如何在不破坏脚本的情况下打印第二个PDF?我想关闭上一个PDF,或者用不同的文件名创建第二个PDF。谢谢你的建议。
Randy

我不确定您为什么希望有一个循环来计算非隐藏图纸的数量。此外,还可以导出该循环中的图纸。这可能会解决您的问题:

For i = 1 To Sheets.Count
    If Sheets(i).Visible = True Then
        Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, filename:= _
            strFilename & Trim(Str(i)) & " " & wedate_text & " Time", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            True
    End If
Next i

还请注意在文件名中添加了工作簿编号,因为它正试图保存到同一个文件。

我不确定为什么要使用循环来计算非隐藏工作表的数量。此外,还可以导出该循环中的图纸。这可能会解决您的问题:

For i = 1 To Sheets.Count
    If Sheets(i).Visible = True Then
        Sheets(i).ExportAsFixedFormat Type:=xlTypePDF, filename:= _
            strFilename & Trim(Str(i)) & " " & wedate_text & " Time", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
            True
    End If
Next i

另请注意,文件名中添加了工作簿编号,因为它正试图保存到同一文件。

您尝试过解决方案吗?我猜您没有提供有效的文件名和扩展名,请提供如下“c:\path\filename.pdf”所示的有效文件名.@Kiran Maroju文件名是通过代码中的单元格引用组装的。您尝试过解决方案吗?我猜您没有提供有效的文件名和扩展名,请提供如下“c:\path\filename.pdf”这样的有效文件名。@Kiran Maroju文件名是通过代码中的单元格引用组装的。我需要将所有工作表打印到一个pdf。这会为每张纸打印单独的PDF。在这种情况下,您可能希望将所有数据放在一张纸上。甚至可以创建新图纸,将数据放入其中,并在将其作为单个文件导出后将其删除。当然,您可以在代码中完成所有这些。如果您在工作表上导出固定格式,那么您将从中获得一个文件。我需要将所有工作表打印到一个PDF。这会为每张纸打印单独的PDF。在这种情况下,您可能希望将所有数据放在一张纸上。甚至可以创建新图纸,将数据放入其中,并在将其作为单个文件导出后将其删除。当然,您可以在代码中完成所有这些。如果在工作表上导出固定格式,则从中得到一个文件。