2016-03-15 115 views
3

我收到錯誤在沒有聲明的情況下結束我的代碼。基本上我想檢查文件是否存在,如果不存在,那麼msgbox會打開它,複製一個範圍,然後將範圍粘貼到目標範圍。我也希望能夠爲多個文件做到這一點。End with without statement

Sub test() 

Dim WbookCheck As Workbook 
Dim filepaths As String 

On Error Resume Next 
Set WbookCheck = Workbooks("LL-AD-ARROW.xls") 
On Error GoTo 0 

If WbookCheck Is Nothing Then 'not open.... 

    filepaths = "c:\Disti-Master\Data\LL-AD-ARROW.xls" 

    If Dir(filepaths) = "" Then 
     MsgBox "File is missing" 
     Exit Sub 
    Else 
     'file exists - open it 
     Set WbookCheck = Workbooks.Open(filepaths) 
     Cells.Select 
      Sheets("Sheet1").Range("B5").Activate 
      Selection.Copy 
      Windows("WW Disti Weekly Q116_Master.xlsm").Worksheets("Update").Range("D3").Activate 
      Selection.PasteSpecial xlPasteValues 
End If 
End With 
End Sub 
+1

你缺少一個** END IF ** –

+2

......和你有一個懸空**結束有**(完之前分)作爲錯誤信息說。如果你格式化/縮進你的代碼,你可以很容易地找到你自己。 – Filburt

+1

這個問題爲什麼被拒絕投票?我明白,這些錯誤可能不符合其他一些問題的高標準。然而,這個問題是有效的,正確的標記,包含格式良好的代碼,是可重複的,並且可能對我們的新同事程序員來說是一個無法解決的痛苦。 – Ralph

回答

2
Sub test() 

Dim WbookCheck As Workbook 
Dim filepaths As String 

On Error Resume Next 
Set WbookCheck = Workbooks("LL-AD-ARROW.xls") 
On Error GoTo 0 

    If WbookCheck Is Nothing Then 'not open.... 

     filepaths = "c:\Disti-Master\Data\LL-AD-ARROW.xls" 

     If Dir(filepaths) = "" Then 
      MsgBox "File is missing" 
      Exit Sub 
     Else 
      'file exists - open it 
      Set WbookCheck = Workbooks.Open(filepaths) 
      Cells.Select 
       Sheets("Sheet1").Range("B5").Activate 
       Selection.Copy 
       Windows("WW Disti Weekly Q116_Master.xlsm").Worksheets("Update").Range("D3").Activate 
       Selection.PasteSpecial xlPasteValues 
     End If 
    End If 

End Sub 
+0

非常感謝你們,但我能夠以不同方式重寫代碼以符合我的報告。有人可以請教我如何根據映射手工創建源文件,然後將vlookup轉發到我的主文件中? –