繁体   English   中英

Excel VBA - 导出为PDF

[英]Excel VBA - Export to PDF

首先,我是新来的,所以请善待。

我创建了一个摘要工作簿,它使用宏从文件夹中的多个工作簿中选择特定范围(“A19:W105”),并将值复制到摘要工作簿中。 此范围内的数据量各不相同,有时可以是1行或最多86行。 代码运行良好,如下所示:

 With wsMaster
            erow = .Range("B" & .Rows.Count).End(xlUp).Row
            wsTemp.Range("A19:W105").Copy
            .Range("B" & erow).Offset(1, 0).PasteSpecial xlPasteValues
 End With

然后,我创建了一个命令按钮,将摘要工作簿保存为PDF。 我现在遇到的问题是,我编写的代码选择了所有已复制的空白单元格。 这导致PDF文件长达多页,即使只有1或2页包含实际数据。 此代码如下:

Dim lastrow As Long
DateStr = Format(Date, "yyyy-mm-d")

lastrow = Cells(Rows.Count, 2).End(xlUp).Row
Range("B1:X" & lastrow).ExportAsFixedFormat Type:=xlTypePDF,_ 
        Filename:="K:\AALI\Forecasts\Exported PDF Summary Sheets\"_
        & "(" & DateStr & ") " & "MR Forecast and Budget Summary" & "_" _
        & Comment, Quality:=xlQualityStandard, IncludeDocProperties:=True,_
        IgnorePrintAreas:=False, OpenAfterPublish:=True

有没有办法只选择其中包含实际信息的范围?

更新1:附件是工作表的屏幕截图。 最后一行数据下面的所有内容都是“空白”(没有公式或文本),但是当宏从其他文件复制信息时,由于IFERROR公式,某些值为空。 这有什么不同吗? 另外,当我复制数据时,我已经将一个排序函数编码到宏中,这有什么问题吗?

文件截图

文件截图

谢谢!

首先在任何不包含任何空格的列的帮助下找出数据的最后一个。 如果要使用Rows.count获取最后使用的行,请确保已保存数据的完整工作表为空(除数据外应该没有任何内容)。

Dim lastrow As Long

If ActiveSheet.Range("B2").Value = "" Then
lastrow = 2
Else
lastrow = Range("B1").End(xlDown).Row
End If
Range("B1:X" & lastrow).Select
Selection.ExportAsFixedFormat xlTypePDF, _
    Filename:=ThisWorkbook.Path & "\Test.pdf"

使用不包含BLANKS的列而不是带有范围对象的“B”来查找数据的结尾,并更改pdf文件的位置和名称。

隐藏空行并将IgnorePrintAreas设置为True可以解决问题。

Dim x As Long, lastrow As Long
Dim DateStr As String


lastrow = Cells(Rows.Count, 2).End(xlUp).Row
For x = 1 To lastrow

    If WorksheetFunction.CountA(Rows(x)) = 0 Then Rows(x).Hidden = True

Next

DateStr = Format(Date, "yyyy-mm-d")
Range("B1:X" & lastrow).ExportAsFixedFormat Type:=xlTypePDF, _
        FileName:="K:\AALI\Forecasts\Exported PDF Summary Sheets\" _
        & "(" & DateStr & ") " & "MR Forecast and Budget Summary" & "_" _
        & Comment, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=True, OpenAfterPublish:=True

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM