我有一段代码,可以将工作表格式化为所需的设置和布局(以横向一页为宽度和高度)。当我运行代码(作为长宏的一部分)时,它会正确地格式化页面设置。
如果我手动将其导出并保存为PDF,则使用正确的页面设置,生成一个横向的一页PDF。然而,由VBA完成的相同导出会生成多页纵向PDF。
我无法弄清楚为什么会这样。我尝试了各种解决方案,例如在导出之前选择工作表,但都无济于事。
感谢任何帮助。
代码看起来像这样:
如果我手动将其导出并保存为PDF,则使用正确的页面设置,生成一个横向的一页PDF。然而,由VBA完成的相同导出会生成多页纵向PDF。
我无法弄清楚为什么会这样。我尝试了各种解决方案,例如在导出之前选择工作表,但都无济于事。
感谢任何帮助。
代码看起来像这样:
Sub SaveAsPDF()
Sheets(ReportWsName).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
[SaveFolderPath] & "\" & ReportWsName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
End Sub
更新:
用于设置网页设置格式的代码(由于它相当长,我只添加了该子部分的相关部分):
Private Sub CreateNewReport(ProvisionCode As String, TimeFrom As Date, TimeTo As Date)
... other code here...
'Format report to create the desired layout
With Worksheets(ReportWsName)
'Delete unnecessary data and format the rest
.Range("A:B,D:D,F:G,J:M,O:O,Q:S").Delete Shift:=xlToLeft
.Range("A:F").EntireColumn.AutoFit
.Range("C:C, E:F").ColumnWidth = 30
With .Range("G:G")
.ColumnWidth = 100
.WrapText = True
End With
'Insert standard formating header form Reporting template
.Rows("1:2").Insert
wsReportTemplate.Range("1:3").Copy .Range("A1")
.Range("A2") = "Notes Report for " & ProvisionCode & " (" & TimeFrom & " - " & TimeTo & ")"
'Insert standard formating footer form Reporting template
wsReportTemplate.Range("A6:G7").Copy .Range("A" & .UsedRange.Rows.Count + 2)
'Ensure all data is hard coded
.UsedRange.Value = .UsedRange.Value
'Format Print Area to one Page
With ActiveSheet.PageSetup
.PrintArea = Worksheets(ReportWsName).UsedRange
.Orientation = xlLandscape
.FitToPagesWide = 1
End With
End With
End Sub