2015-04-02 75 views
1

我正在學習VBA作爲加快工作中某些過程的手段。我必須將房間清單發送到excel格式的PDF格式的屬性。我有下面的代碼很好用,但是每當其中一個工作表被隱藏時,我會收到一條錯誤消息。由於房產從旅途變爲旅行,我必須經常隱藏牀單。VBA - 忽略隱藏的工作表 - 將具體工作表保存爲PDF

我想PDF從工作表從第四張工作表到工作表名稱「發佈」。每當我隱藏在這些之間的薄層我得到了以下錯誤消息「運行時錯誤‘5’:無效的過程調用或參數」

下面的代碼:

Sub SaveAllPDF() 
Dim I As Integer 
Dim Fname As String 
Dim TabCount As Long 


TabCount = Sheets("Post").Index 

' Begin the loop. 

For I = 4 To TabCount 
Sheets(I).Activate 
With ActiveSheet 
Fname = .Range("C15") & " " & .Range(" B1") 
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ 
"C:\Users\brandon.ford\Desktop\Operation Automated\" & Fname,  
Quality:=xlQualityStandard, _ 
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 
End With 
Next I 
End Sub 

任何人有任何想法如何解決這個問題,所以'我= 4到TabCount'忽略任何隱藏的標籤?任何幫助將非常感謝,我一直試圖解決這個問題很長一段時間,並沒有太多的VBA知識。

回答

2

Sheets.Visible有3種狀態:xlSheetVisible, xlSheetHidden, xlSheetVeryHidden

xlSheetVeryHidden是不能可見從Excel隱藏的工作表,它甚至不會在你的列表中。

因此,通過測試,您將避免隱藏牀單並順利進行!

試試這個:

Sub SaveAllPDF() 
    Dim I As Integer 
    Dim Fname As String 
    Dim TabCount As Long 


    TabCount = Sheets("Post").Index 

    ' Begin the loop. 

    For I = 4 To TabCount 
     If Sheets(I).Visible <> xlSheetVisible Then 
     Else 
      With Sheets(I) 
       Fname = .Range("C15") & " " & .Range(" B1") 
       .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ 
       "C:\Users\brandon.ford\Desktop\Operation Automated\" & Fname, Quality:=xlQualityStandard, _ 
       IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 
      End With 
     End If 
    Next I 
End Sub 
+0

感謝您的答覆!出於某種原因,當我運行這個宏時,沒有任何反應。沒有錯誤,它似乎沒有開始,因爲沒有加載 – arbitel 2015-04-02 15:15:30

+0

我的不好,我忘了工作表變量,因爲我很久沒有使用它們了!更正了! ;) – R3uK 2015-04-02 15:20:28

+1

Upvoted與原始代碼和接受的答案不同,它不會激活每個工作表 – brettdj 2015-04-03 08:45:24

3

以您目前的循環,這是最簡單地檢查工作表是試圖出口前可見避免。 Visible屬性包含此信息。如果工作表可見,則該值應爲xlSheetVisible。

以下是完整的代碼檢查:

Sub SaveAllPDF() 
Dim I As Integer 
Dim Fname As String 
Dim TabCount As Long 


TabCount = Sheets("Post").Index 

' Begin the loop. 

For I = 4 To TabCount 
Sheets(I).Activate 
With ActiveSheet 
    If .Visible = xlSheetVisible Then 

     Fname = .Range("C15") & " " & .Range(" B1") 
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _ 
     "C:\Users\brandon.ford\Desktop\Operation Automated\" & Fname, 
     Quality:=xlQualityStandard, _ 
     IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 

    End If 
End With 
Next I 
End Sub 
+0

完美,這很好!非常感謝你,我覺得我一直在這個問題上跳舞很長時間,而且不太對勁。 – arbitel 2015-04-02 15:13:36