我有一个Excel文件,其中有一个按钮"生成PDF"运行一个宏来打印某个工作表(让我们称之为#34; QUOTE")到PDF。这张表的边距很有限,在我的电脑中,创建的PDF具有完美的结构:所有内容都包含在1页中。但是,在某些其他计算机中,创建PDF时,所有内容都不适合1页,而第2页是使用一些内容创建的。这是代码(包括通过限制边距来解决此问题的尝试):
Sub Excel_Export_Proposal()
Dim wb As Workbook: Set wb = ThisWorkbook
Dim wsCOTIZACION As Worksheet
Dim Proposalname As String
Dim iVis As XlSheetVisibility
Dim xlName As Excel.Name
Dim FolderPath As String
Dim myRange As String
Set wsQUOTE = ThisWorkbook.Sheets("QUOTE")
FolderPath = ActiveWorkbook.Path & "\"
Proposalname = "Quote for " & CStr(Range("B2").Value)
wsQUOTE.PageSetup.PrintArea = myRange
With wsQUOTE.PageSetup
.FitToPagesTall = 1
.FitToPagesWide = False
.Zoom = False
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.75)
.TopMargin = Application.InchesToPoints(0.75)
End With
'Proposal
Application.ScreenUpdating = False
wb.Unprotect
With wsQUOTE
iVis = .Visible
.Visible = xlSheetVisible
.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\" & Proposalname & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=True, _
OpenAfterPublish:=True
.Visible = iVis
wsQUOTE.Activate
End With
wb.Protect
Application.ScreenUpdating = True
End Sub
有人可以帮我解决这个问题吗?我希望无论生成的计算机或软件是什么,我们都能完美地打印这张纸......
答案 0 :(得分:3)
为了在一个页面中使用包含Excel_Export_Proposal
的{{1}}程序,应始终应用以下调整:
正确设置打印区域:
此行设置打印区域:PrintingArea
但是,在此行之前没有为变量wsQUOTE.PageSetup.PrintArea = myRange
分配值,因此myRange
设置为PrintArea
,相当于将其设置为{{""
的整个UsedRange
1}}表。
为确保整个wsQUOTE
打印在一个页面中,PrintArea
和FitToPagesTall
必须设置为1
将FitToPagesWide
替换为.FitToPagesWide = False
在将.FitToPagesWide = 1
和.Zoom = False
设置为1
FitToPagesTall
移除后,将其移除
要确保FitToPagesWide
方法使用目标Excel文件中定义的打印区域,请将ExportAsFixedFormat
参数设置为IgnorePrintAreas
。
将此行False
替换为此行IgnorePrintAreas:=True, _
以下是修订后的程序:
IgnorePrintAreas:=False, _
有关所用资源的其他信息,请参阅以下页面:
Worksheet.ExportAsFixedFormat Method (Excel)
PageSetup Object (Excel)