2016-02-20 61 views
3

我寫如果用戶選擇一個複選框,包括該板在PDF報告,以打造基於字符串表的列表一些代碼。請看下圖:選擇多個Excel表導出爲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 - - 如果我嘗試輸入字符串值直接在它的工作原理(我也驗證一切都正確拼寫)

附加註意然而,這並不讓我隨時可變。

回答

1

您正在構建一個逗號分隔的字符串,您必須將其轉換爲數組。你是非常接近

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 

注意這使得 PDF文件的所有三個表。如果你想要單獨的文件,你可以使用循環。
請注意,PDFsheets中沒有空格,因爲我的工作表名稱中沒有空格。

+0

我仍然得到下標超出範圍的錯誤。另一個想法可能會導致問題是該工作簿有多個窗口。我已經嘗試在選擇行之前爲每個不同的窗口添加一個'Windows(「WindowName」)。Activate',但是無論如何都會得到相同的錯誤。 – SincereApathy

+0

@SincereApathy **請注意,我沒有在表格名稱字符串中包含空格字符** ..................您的標籤名稱可能不會** **以空格字符開頭! –

+0

我已經試過了這兩種方法,目前已刪除空間。 – SincereApathy