我有一个带有页面的电子表格(表3),我想将其导出为PDF(使用宏导出pdf)。
目前,这会链接到另一个工作表,用户可以在其中放入日期范围以从较大的工作表中提取相关数据。这使用以下数组公式来填充工作表3上的数据:
=IFERROR(INDEX(Sheet1!$V$3:$W$5998,SMALL(IF((Sheet1!$C$3:$C$5998>=Crynodeb!$D$3)*(Sheet1!$C$3:$C$5998<=Crynodeb!$F$3)*(Sheet1!$V$3:$V$5998<>""),ROW(Sheet1!$V$3:$W$5998)-2),ROW(18:18)),1),"")
Sheet 3上的数组公式已应用于大约6000行数据。因此,有可能返回6000行数据。但是,根据用户输入的标准,可能只返回5行数据。
除此之外,我还将单元格格式应用于6000行,以便在数据行之间存在打印友好的行。
但是,由于这已经应用于6000行数据,因此可能会导出61个左右的页面,而实际上只显示一页数据。
是否有一种简单的方法可以继续在大范围内应用数组公式,同时将打印功能限制为仅应用于包含从数组公式返回的数据的页面?
我也在使用格式&gt; AutoFit Row Height 功能可根据返回项目的长度调整行高,但此时我认为每次返回数据时都必须手动执行此操作。有没有办法自动应用它来调整页面内容?
非常感谢
答案 0 :(得分:0)
由于您希望通过宏将数据导出为PDF,我们可以将您想要的所有内容放入该宏中。
宏需要找到具有值的范围。从你的例子中,我假设总会有从A3开始返回的数据;然后在数据结束之前,A列中不会出现空白。
因此,这个宏从A3开始并查看每个单元格,直到它找到一个空白值来确定数据的结束位置。
我还假设您拥有固定数量的数据列。我只能看到2列,所以我在宏中使用了这个数字。您可以将指示的代码更新为实际的列数。
然后,从A1到数据的最后一行和一列,它会自动对行进行自动调整,然后将该范围保存为PDF。
Public Sub SaveCopy()
Dim intLastRow As Integer
'Loops through column A to find last row with data
intLastRow = 3
Do While Cells(intLastRow + 1, 1).Value <> ""
intLastRow = intLastRow + 1
Loop
'With the range of data...
'NOTE: REPLACE '2' WITH ACTUAL NUMBER OF COLUMNS OF DATA
With Range("A1", Cells(intLastRow, 2))
'Ensure text is wrapping - required to autofit
.WrapText = True
'Autofit row height
.Rows.AutoFit
'Save as PDF
.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.FullName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
End With
End Sub
这是一个基本导出,只是将PDF保存到与文件相同的位置并使用相同的文件名(包括excel文件扩展名),只需附加.PDF文件扩展名。
有多种选项可用于处理PDF的文件名和位置。随着有关所需内容的更多信息,我可以帮助提供强大的解决方案。
或者,您可以删除导出为PDF的代码行,并将其替换为“.Select”
这将选择数据范围,然后您可以手动保存为PDF。只需使用另存为...将类型更改为PDF,单击选项,然后在“发布内容”部分中选择“选择”。
如果我的任何假设不正确,请告诉我。