VBA:运行时自动化错误 - “代码执行已中断”

时间:2018-01-09 21:17:02

标签: vba excel-vba excel

我正在尝试编写一个程序来遍历excel文件目录并将范围复制到“主工作簿”中。当我运行程序时,系统会提示“代码执行已被中断”。如果我选择继续,代码将成功运行,但随后出现“运行时错误'-2147221080'自动化错误”。

导致错误的行是:

 Set ws = wb.Worksheets("Project Log")

我的问题是,为什么这一行会导致错误,或者是否有办法绕过错误提示以便我的代码能够成功运行?

 Sub FileCompiler()
 Dim folderPath As String
 Dim Filename As String
 Dim wb As Workbook
 Dim Masterwb As Workbook
 Dim ws as Worksheet
'set workbook in which data will be copied to
Set Masterwb = ActiveWorkbook

'declare path
'folderPath = "C:MyPath\"

If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"

'compile directory data to master spreadsheet
Filename = Dir(folderPath & "*.xls*")
Do While Filename <> ""
    Application.ScreenUpdating = False
    Set wb = Workbooks.Open(folderPath & Filename)
    Set ws = wb.Worksheets("Project Log")
    ws.Range(ws.Cells(2, "C"), ws.Cells(2, "C")).Copy
    Masterwb.Worksheets("Staging").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
    ws.Range(ws.Cells(7, "A"), ws.Cells(Rows.Count, "K").End(xlUp)).Copy
    Masterwb.Worksheets("Staging").Range("B" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
    wb.Close True
    Filename = Dir
Loop
Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:2)

   Dim Finfo As String
    Dim FilterIndex As Long
    Dim Title As String
    Dim CopyBook As Workbook
    Dim CopySheet As Worksheet
    Dim ForecastFileName As Variant 
    Dim MasterSheet AS Worksheet

Set MasterSheet = ThisWorkbook.Worksheets("Yoursheetname")
'now you can always use master sheet after you set copybook 

  'Set up file filter
    Finfo = "Excel Files (*.xls*),*.xls*"
    'Set filter index to Excel Files by default in case more are added
    FilterIndex = 1
    ' set Caption for dialogue box
    Title = "Hey there!, select a file"

    'get the Forecast Filename
    ForecastFileName = Application.GetOpenFilename(Finfo, FilterIndex, Title)

'Change this according to what you need for workbook and worksheet names
Workbooks.Open (ForecastFileName)
Set CopyBook = ActiveWorkbook
Set CopySheet = CopyBook.Worksheets(1)

'Do your code, remember to close

CopyBook.Close savechanges:=False 'Not needed now

您可能想要检查ForecastFileName是否为False,也就是当用户x出局时,您还需要通过检查列标题等来确认wb表格格式正确,或者您将结束崩溃