2014-09-20 9 views
0

У меня есть несколько отдельных книг Excel с одним рабочим листом. Затем мне нужно скопировать итоговую таблицу. Я попробовал следующее и запустил подзаголовок Error 9.Ошибка VBA «Подзаголовок вне диапазона» при использовании Excel Workbooks.Copy

Ошибка возникает на линии workbooks.copy. Если я прокомментирую бит «после ...», он по-прежнему падает с той же ошибкой, поэтому должна быть команда workbooks.copy, которая вызывает ошибку, но я не могу понять, почему. Любая помощь очень ценится. Благодарю.

Sub test() 
On Error GoTo testErr 
If Len(Dir("z:\September14\Birmingham.xlsx")) <> 0 Then 
    If Len(Dir("z:\September14\BirminghamSummary.xlsx")) <> 0 Then 
    Workbooks("z:\September14\birmingham.xlsx").Sheets(1).Copy , _ 
     after:=Workbooks("z:\September14\BirminghamSummary.xlsx").Sheets(1) 
    End If 
End If 
Workbooks.Close 
Exit Sub 
testErr: 
    MsgBox Err.Number & " : " & Err.Description 
End Sub 
+0

Для того, чтобы скопировать лист с одного на другой, вам нужно открыть обе книги. –

ответ

0

Как предположил @Ron Rosenfeld, то «Подстрочный вне диапазона» ошибка срабатывает, потому что рабочие книги не открыты, прежде чем пытаться скопировать лист. Я определил книги как таковые, чтобы избежать необходимости извлекать имена книг для использования в методе Workbooks.Close.

Option Explicit 

Sub test() 
Dim SourceWB As Workbook 
Dim DestWB As Workbook 

Application.ScreenUpdating - False 
On Error GoTo testErr 
If Len(Dir("z:\September14\Birmingham.xlsx")) <> 0 Then 
Set SourceWB = Workbooks.Open(Filename:="z:\September14\Birmingham.xlsx") 
    If Len(Dir("z:\September14\BirminghamSummary.xlsx")) <> 0 Then 
     Set DestWB = Workbooks.Open(Filename:="z:\September14\BirminghamSummary.xlsx") 
     With SourceWB 
      .Sheets(1).Copy , after:=DestWB.Sheets(1) 
      .Close (False) 
     End With 
    End If 
    DestWB.Close (True) 
End If 
Exit Sub 
testErr: 
    MsgBox Err.Number & " : " & Err.Description 
End Sub 
Смежные вопросы