gpt4 book ai didi

vba - 选择多个 Excel 工作表导出为 PDF

转载 作者:行者123 更新时间:2023-12-02 21:34:45 24 4
gpt4 key购买 nike

我编写了一些代码,根据用户是否选择复选框以将工作表包含在 PDF 报告中来构建字符串中的工作表列表。见下文:

If CheckBox1.Value = True Then
PDFsheets = "Sheet11"
End If

If CheckBox2.Value = True Then
If PDFsheets = "" Then
PDFsheets = "Sheet13"
Else
PDFsheets = PDFsheets & ",Sheet13"
End If
End If

If CheckBox3.Value = True Then
If PDFsheets = "" Then
PDFsheets = "Sheet2"
Else
PDFsheets = PDFsheets & ",Sheet2"
End If
End If

例如,当选中所有 3 个复选框时,MsgBox PDFsheets 显示结果 Sheet11、Sheet13、Sheet2

现在,当我尝试执行多个工作表选择时,出现运行时错误 9 - 下标超出范围。我尝试过的不同方法包括:

ThisWorkBook.Sheets(PDFsheets).Select

<小时/>

ThisWorkBook.Sheets(Array(PDFsheets)).Select

<小时/>
xPDF() = Split(PDFsheets, ",")
ThisWorkBook.Sheets(xPDF).Select
<小时/>
xPDF() = Split(PDFsheets, ",")
ThisWorkBook.Sheets(Array(xPDF)).Select
<小时/>
xPDF() = Split(PDFsheets, ",")

For i = 0 to Application.CountA(xPDF) - 1
Sheets(xPDF(i)).Select
next i
<小时/>

此外,为了简洁起见,我已使用 ActiveWorkbook 而不是 ThisWorkBook 尝试了上述所有示例。另外,我尝试重写我的字符串构建部分以引用上面所有示例的工作表名称而不是数字。因此,结果不是 Sheet11、Sheet13、Sheet2,而是 "Sheet11"、"Sheet13、"Sheet2",工作表两边带有双引号。

我已经查看了此处和其他地方的其他问题和代码示例,它们显示了相同的目标,并且我完全按照他们的方式使用选择行,并且出现了下标超出范围错误。 (我还验证了所有内容都拼写正确)

附加说明如果我尝试直接在其中输入字符串值,它会起作用 - ThisWorkBook.Sheets("Sheet11, Sheet13, Sheet2").Select - 但是,这不会不允许我保持它的可变性。

最佳答案

您正在构建一个逗号分隔的字符串,您必须将其转换为数组。您非常非常接近:

Sub BuildAString()
Dim PDFsheets As String
Dim s As Worksheet
PDFsheets = "Sheet1,Sheet2,Sheet3"
ary = Split(PDFsheets, ",")

Sheets(ary).Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\TestFolder\Book1.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub

请注意,这将为所有三张纸生成 1 个 pdf 文件。如果您想要 3 个单独的文件,则可以使用循环。
请注意,PDFsheets 中没有空格,因为我的工作表名称没有空格。

关于vba - 选择多个 Excel 工作表导出为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com