【问题标题】:Excel VBA - Export to PDFExcel VBA - 导出为 PDF
【发布时间】:2017-02-09 14:33:18
【问题描述】:

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

我创建了一个摘要工作簿,它使用宏从文件夹中的多个工作簿中选择特定范围(“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 公式,某些值是空白的。这有什么不同吗?另外,在复制数据时,我已将排序函数编码到宏中,有什么问题吗?

文件截图

谢谢!

【问题讨论】:

  • 能否提供截图。数据之间有空行吗?数据后面有空行吗?

标签: vba excel pdf


【解决方案1】:

首先在任何不包含任何空格的列的帮助下找出最后一个数据。如果您想使用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 文件的位置和名称。

【讨论】:

  • 我仍然可以在 PDF 上找到多个页面。有关更多信息,请参阅更新。在这种情况下,超过 38 的所有行都是空白的,但表现得好像有一个关联的值(即 Ctrl + Shift + Down 查找'values' 直到第 618 行,即使没有与该范围关联的值。
  • 尝试 CLEAN & TRIM 数据。
【解决方案2】:

隐藏空行并将 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

【讨论】:

  • 会出现同样的问题。我在描述中添加了更新。此外,我还将重申我在 Aditya 的帖子下留下的评论:在这种情况下,所有超过 38 的行都是空白的,但表现得好像有一个关联的值(即 Ctrl + Shift + Down 查找到第 618 行的“值”即使没有与该范围关联的值。
  • 你确定没有空格吗?我会删除超过 38 行的所有行,然后保存电子表格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-04
  • 2020-06-27
  • 2021-04-22
  • 1970-01-01
  • 2015-08-03
  • 2014-01-12
  • 2018-05-26
相关资源
最近更新 更多