vba - Excel VBA - 导出为 PDF

标签 vba excel 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 公式,某些值是空白的。这有什么区别吗?另外,当复制数据时,我已将排序函数编码到宏中,有什么问题吗?

文件截图

Screenshot of file

谢谢!

最佳答案

首先借助不包含任何空格的任何列找出最后一个包含数据的数据。如果您想使用 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"

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

关于vba - Excel VBA - 导出为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801253/

相关文章:

java - "(someString) Tj"到 java 字符串编码问题 (PDFBox)

VBA:获取变量的名称

arrays - 使用范围或数组进行的简单操作会产生不同的结果

excel - 使用 Excel 宏从 SAP 提取数据

vba - 如何将新行插入范围并复制公式

excel - 将行与上面的行相乘并获得平均值

python - 将 excel 数据与 python 或 Excel 连接起来

excel - 将字符串数组传递给 Excel VBA 中的 Range().Formula

安卓填写PDF表格

pdf - PDF 线宽如何在水平和垂直维度上与 CTM 交互?