2017-05-25 97 views
0

我找不到錯誤在哪裏。一個類似的代碼拉動態文件名在另一個選項卡中工作。如何在VBA中跟蹤400錯誤?

Sub MonthlyBCRCPL() 

    Dim filePath As String 
    Dim CardsRCPLWb As Workbook 
    Set CardsRCPLWb = ActiveWorkbook 
    filePath = CardsRCPLWb.Sheets("BCRCPL").Range("A1").Value 

    'Optimize Code 
    Call OptimizeCode_Begin 

    Const FlashFolder As String = "\\apacdfs\SG\GCGR\GROUPS\ASEAN\Dashboard\Cards\Flash\" 
    Flashname = Format(CardsRCPLWb.Sheets("ASEAN - CARDS, RCPL").Range("C2").Value, "YYYYMMDD") 
    Flashname = "ASEAN SD Regional Dashboard - " & Flashname & ".xlsx" 
    Flashpath = FlashFolder & Flashname 
    Dim FlashWb As Workbook 
    Set FlashWb = Workbooks.Open(Flashpath) 
    If FlashWb Is Nothing Then MsgBox "SD Flash File does not exist": Exit Sub 
+0

哪條線給出錯誤? – YowE3K

+0

使用Dir()方法檢查文件是否存在。 –

回答

1

在子程序中考慮handling the error並讓它引發一條消息。然後,正確地繼續/跳過/退出代碼的其餘部分,甚至在異常期間捕獲內存中的對象。這是VBA的最佳實踐(通常在編程中)。

我懷疑路徑無法找到這看起來是一個網絡UNC,文件命名是無效的,如使用特殊字符,或工作簿不存在試圖打開時:

Sub MonthlyBCRCPL() 
    On Error Goto ErrHandle: 
    ...code... 

ExitSubBlock:  
    Set CardsRCPLWb = Nothing 
    Set FlashWb = Nothing 
    Exit Sub 

ErrHandle: 
    Msgbox Err.Number & " - " & Err.Description, vbCritical, "RUNTIME ERROR" 
    Goto ExitSubBlock 
    ' Resume Next  
End Sub