Excel - 通过VBA代码将多张纸导出为.pdf
对帖子中的任何格式错误表示歉意,但这是我第一次使用该网站,并且我不太了解fquestion格式化指令。Excel - 通过VBA代码将多张纸导出为.pdf
我看到的董事会这个问题,但它并不完全回答我的问题,但它可以为任何人都希望帮助是有用的 - excel vba not exporting pagesetup to pdf correctly
我恰好具有在每个指定范围内的同样的问题在使用代码创建.pdf输出时,不会导出工作表。导出的内容是每个工作表上的所有内容,因此每个工作表都分布在2个或更多页面上。每张纸的打印范围设置为将指定区域打印到1张纸上。
我尝试过修改上面链接中的代码,但它似乎不适用于多张工作表。
我试图在其不适应的形式使用的代码如下
Sub ClientPDFOutput()
If Sheets("File Data").Range("FD_FileName") = "" Then
' MsgBox ("Save the file before exporting to a .pdf fomrat"), vbInformation, "Save File"
' Exit Sub
Else
End If
ActiveSheet.Unprotect Password:=strPassword
Range("UI_Status") = "Creating client PDF output - Please wait"
SelectSheets
Application.ScreenUpdating = False
Sheets(arrSheets).Select
strFilename = "Test"
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
filename:=ActiveWorkbook.Path & "\" & strFilename & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=True, _
OpenAfterPublish:=False
Sheets("User Input").Select
Range("UI_Status") = "Client .pdf output created and saved"
ActiveSheet.Protect Password:=strPassword
Application.ScreenUpdating = True
MsgBox ("The client output in .pdf format has been created and saved"), vbInformation, ".pdf Created"
End Sub
和
Sub SelectSheets()
Dim rngSheets As Range
Set rngSheets = Sheets("File Data").Range("D_OutputSheets")
If rngSheets.Count = 1 Then
arrSheets = rngSheets.Value2
Else
arrSheets = Application.Transpose(rngSheets.Value2)
End If
End Sub
TIA
后多一点尝试我建立了我的打印范围上的每个的页面已经关闭,所以纠正了这些。
我还添加了一些代码来选择每张纸的打印范围,然后它们全部被选作纸张数组的一部分,但是数组的第一张纸的打印范围正在所有纸张上被复制......所以如果纸张1中的范围是B4:P61并且纸张2的打印范围是B4:M48,则当选择了纸张阵列时,纸张2将选择B4:P61。
然后打印出对于纸张1正确的选定范围,但是对于其余纸张而言是错误的。
当我通过选择所有工作表,文件,导出来手动完成此操作时,所有工作表的打印范围都将被导出,为什么当这被记录并放入例程时,它将被忽略?
感谢
请尝试更改IgnorePrintAreas
财产。
Selection.ExportAsFixedFormat _
Type:=xlTypePDF, _
filename:=ActiveWorkbook.Path & "\" & strFilename & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
我会建议使用以下,以确保您的页面设置它修复到一个页面:
With ActiveSheet.PageSetup
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
删除无论是在with语句中的第一或第二行根据自己的喜好,或保留都。
此外我看你有selection.ExportAsFixedFormat
。确保您选择的区域正确或使用固定范围。您可能还想动态确定最远的行/列,并将其添加到变量PrintRange
。 Getting the actual usedrange。 集IgnorePrintAreas:=False
Dim PrintRange As Range
Set PrintRange = Range("A1:XX100")
PrintRange.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=Filename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False