【问题标题】:VBA Excel Ignores PrintArea PdfVBA Excel忽略PrintArea Pdf
【发布时间】:2021-06-04 11:16:58
【问题描述】:

我有 250 个 excel 文档,我尝试在其中打印一张 pdf 表格。如果我手动执行,它将是 4 页,但如果我使用我的代码,它将是 7 页。

这就像是忽略了打印区域,做了几个空白页。

你们谁能找出错误?

    Dim wb As Workbook
    Dim xExtension As String: xExtension = "*.xls*"
    Dim xFolder As String: xFolder = [MailFolder]
    Dim xFile As String: xFile = Dir(xFolder & xExtension) 'DIR gets the first file of the folder
    Dim Rng As Range: Set Rng = Range("A1")
    Dim s As String
    

    
    Do While xFile <> "" 'Loop through all files in a folder until DIR cannot find anymore
        
Set wb = Workbooks.Open(xFolder & xFile): wb.Activate
    
        
        Call WorksheetsToPDF(wb, "F:\VBA\PDF\Udlejning\" & CleanFileName("Police - " & "2021 -" & [KompletPoliceNr] & " - " & [Forsikringstager]) & ".pdf", "Certifikat")
        'Call WorksheetsToPDF(wb, "F:\VBA\KF Begæringer\" & CleanFileName("KF Begæring-2021-" & [KompletPoliceNr] & "-" & [Forsikringstager]) & ".pdf", "Police")
        
        wb.Close savechanges:=False
        xFile = Dir()
    Loop
    
    End Sub

Private Sub WorksheetsToPDF(wb As Workbook, DistinationPath As String, ParamArray Arr() As Variant)
    wb.Sheets(Arr()).Select
    Debug.Print EFDK.GetNextavailablefilename(DistinationPath)
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=EFDK.GetNextavailablefilename(DistinationPath), Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False

End Sub


Private Function GetNextAvailableFilename(ByVal xPath As String) As String
    With CreateObject("Scripting.FileSystemObject")
        Dim strFolder As String, strBaseName As String, strExt As String, i As Long
        strFolder = .GetParentFolderName(xPath)
        strBaseName = .GetBaseName(xPath)
        strExt = .GetExtensionName(xPath)

        Do While .FileExists(xPath)
            i = i + 1
            xPath = .BuildPath(strFolder, strBaseName & " - " & i & "." & strExt)
        Loop
    End With

    GetNextAvailableFilename = xPath
End Function

【问题讨论】:

  • 是的,这也是我不明白的原因。
  • EFDK 是一个类吗?您在哪里声明以及如何声明?如果是课程,请编辑您的问题并粘贴其代码。
  • 是一个模块,我已经更新了代码。
  • 真的有空页,还是超过excel表格宽度的列?
  • 还活着吗?所有多余的页面都是空白的吗?

标签: vba pdf


【解决方案1】:

你没有回答我的澄清问题...

为了测试,请尝试下一个适配的功能:

Private Sub WorksheetsToPDF(wb As Workbook, DistinationPath As String, ParamArray arr() As Variant)
    Dim El
    wb.Sheets(arr()).Select
    For Each El In arr()
       wb.Sheets(El).PageSetup.FitToPagesWide = 1
       wb.Sheets(El).PageSetup.PaperSize = xlPaperA4 ' xlPaperLetter
       wb.Sheets(El).PageSetup.Orientation = xlLandscape
    Next
    'Debug.Print EFDK.GetNextavailablefilename(DistinationPath)
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=EFDK.GetNextavailablefilename(DistinationPath), Quality:=xlQualityStandard, IncludeDocProperties:=True
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多