2017-05-25 5 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

を:開こうとすると

私は、ファイルの命名は、このような特殊文字の使用として有効でないか、またはワークブックが存在しないパスがネットワークUNCになりそうだどの見つけることができない疑いがありますエラーを出す? – YowE3K

+0

ファイルがDir()メソッドで存在するかどうかを確認します。 –

答えて

1

サブルーチンでhandling the errorを考慮してメッセージを生成させます。その後、例外の間にキャッチされたメモリからオブジェクトを解放しても、残りのコードを適切に継続/スキップ/終了します。これはVBAのベストプラクティス(一般的にはプログラミング)です。ラインがある

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 
関連する問題