【发布时间】:2017-05-14 17:13:59
【问题描述】:
我已经看到了这个问题,但它并没有完全回答我的问题 - excel vba not exporting pagesetup to pdf correctly
在使用代码创建 .pdf 输出时,我遇到了相同的问题,即每个工作表中的指定范围没有被导出。每个工作表上的所有内容都被导出,因此每个工作表都分布在两个或多个页面上。每张纸的打印范围设置为将指定区域打印到一张纸上。
我已尝试调整链接中的代码,但它似乎不适用于多张工作表。
我试图以未经调整的形式使用的代码
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
经过更多试验后,我确定我在每一页上的打印范围都已关闭,因此更正了这些。
我添加了代码以在所有工作表都被选为工作表数组的一部分之前选择每个工作表的打印范围,但是数组的第一个工作表中的打印范围在所有工作表中都被复制。因此,如果工作表 1 中的范围是 B4:P61,工作表 2 的打印范围是 B4:M48,那么当工作表数组被选中时,工作表 2 将选择 B4:P61。
这会打印出所选范围,这对于工作表 1 是正确的,但对于其余工作表是错误的。
当我通过选择所有工作表、文件、导出手动执行此操作时,所有工作表打印范围都会被导出,那么为什么当它被记录并放入例程时它被忽略了?
【问题讨论】:
标签: excel vba pdf-generation