Excel - 通过VBA代码将多个工作表导出为.pdf

Mic*_*May 5 excel vba pdf-generation

对帖子中的任何格式错误表示歉意,但这是我第一次使用该网站,我不太了解fquestion格式说明.

我已经在主板上看到了这个问题,但它并没有完全回答我的问题,但它可能对任何想要帮助的人都有用 - excel vba没有正确地将pagesetup导出到pdf

我在使用代码创建.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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

TIA

经过一些实验,我确定每个页面上的打印范围都已关闭,因此请更正.

我还添加了一些代码来选择每张纸的打印范围,然后将它们全部选为纸张阵列的一部分,但是阵列的第一张纸中的打印范围正在所有纸张上重复...所以如果范围在纸张1中B4:P61和纸张2打印范围是B4:M48,纸张2在选择纸张阵列时选择B4:P61.

然后打印出所选范围,这对于纸张1是正确的,但对于其余纸张则是错误的.

当我通过选择所有工作表手动执行此操作时,文件,导出然后导出所有工作表打印范围,那么为什么当记录它并将其放入例程时它被忽略?

谢谢

Lim*_*mak 0

请尝试更改IgnorePrintAreas属性。

Selection.ExportAsFixedFormat _
   Type:=xlTypePDF, _
   filename:=ActiveWorkbook.Path & "\" & strFilename & ".pdf", _
   Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, _
   IgnorePrintAreas:=False, _
   OpenAfterPublish:=False
Run Code Online (Sandbox Code Playgroud)