select多个Excel表格导出为PDF

如果用户selectcheckbox将表单包含在PDF报表中,则我编写了一些代码以基于string构build工作表列表。 见下文:

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个checkbox时, MsgBox PDFsheets显示结果Sheet11, Sheet13, Sheet2

现在,当我尝试做多张select,我得到运行时错误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的所有上述示例。 另外,我已经尝试重写我的string构build部分来引用表单名称,而不是上面的所有示例的数字。 因此,而不是Sheet11, Sheet13, Sheet2结果是"Sheet11", "Sheet13, "Sheet2"与表单周围的双引号。

我在这里和其他地方查看了其他问题和代码示例,这些示例显示了相同的目标,而且我正在使用select行,就像他们已经得到的那样,我得到的下标超出范围错误。 (我也validation了一切拼写正确)

额外的注意,如果我尝试直接inputstring值的作品 – ThisWorkBook.Sheets("Sheet11, Sheet13, Sheet2").Select – 但是,这不允许我保持它的variables。

你正在build立一个逗号分隔的string,你必须转换成一个数组。 你非常接近:

 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中没有空格,因为我的工作表名称中没有空格。