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