2015-12-03 2 views
1

Кажется, это обычный вопрос, и я искал и пробовал много предложений здесь, но ошибка сохраняется. Я хочу скопировать лист «case1» из текущей книги в существующую книгу (имя файла «workbook2.xlsx», у нее есть рабочий лист с именем «case2»), затем сохраните книгу и закройте ее. Иногда это работает хорошо, но большую часть времени я продолжал получать ту же ошибку. На самом деле я не менял никакого кода, поэтому не знаю, где пошло не так.excel Ошибка VBA: вызванный объект отключился от своих клиентов

Ошибка показывает, что «вызванный объект отключился от своих клиентов». Он всегда ломается в том же месте:

ThisWorkbook.Sheets("case1").Copy Before:=ActiveWorkbook.Sheets("Case2")

Sub CopySheet() 

    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 



    'open existing "workbook2.xlsx" 
    Workbooks.Open filename:="c:\workbook2.xlsx" 

    'copy a sheet named "case1" from current workbook to "workbook2.xlsx" which already has a sheet named "case2" 
    ThisWorkbook.Sheets("case1").Copy Before:=ActiveWorkbook.Sheets("Case2") 

    'close "workbook2.xlsx" 
    Workbooks("workbook2.xlsx").Activate 
    ActiveWorkbook.Close SaveChanges:=True 

    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 

End Sub 

ответ

1

Всегда устанавливайте ссылки на листы и рабочие книги, то нет никаких шансов запутанных, что есть что. Этот код делает то же самое и не должен давать вам никаких ошибок.

Sub CopySheet() 
    Dim wb1 As Workbook, ws1 As Worksheet 'Source 
    Dim wb2 As Workbook, ws2 As Worksheet 'Target 

    Set wb1 = ThisWorkbook 
    Set ws1 = wb1.Sheets("case1") 
    Set wb2 = Workbooks.Open("c:\workbook2.xlsx") 
    Set ws2 = wb2.Sheets("case2") 

    ws1.Copy Before:=ws2 
    wb2.Close True 
End Sub 
+0

спасибо большое! Моя проблема была решена на основе вашего предложения! –

Смежные вопросы