如何在VBA中跟踪400错误?

时间:2017-05-25 07:40:03

标签: vba excel-vba excel

我无法找到错误的位置。拉动态文件名的类似代码在另一个选项卡中有效。

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

1 个答案:

答案 0 :(得分: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