2016-01-27 2 views
0

Я работаю над текущей книгой в Excel. В VBA, я сделал следующее:Excel - включение предыдущей книги после ее удаления

Sheets("Upload File").Select 
Cells.Select 
Selection.Copy 
Workbooks.Add 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 

Так что теперь, «Книга1» является новая книга. После того, как я сделал то, что мне нужно делать там, мне нужно это затем активировать оригинальную книгу, тот, где у меня есть все V и т.д.

Я закрываю «BOOK1» с:

ActiveWindow.Close 

Но в следующем Sub в процессе, я не могу назвать какой-либо из листов в активной книге:

Sheets("Upload File").Range("A1:AB65536").ClearContents 

, как я получаю «Подстрочный Out Of Range» ошибка из-за книгу, «Загрузить Файл "не активируется снова.

Благодарим вас за то, что нашли время, чтобы посмотреть на это.

ответ

0

Лучший способ справиться с чем-то подобным - это работать с объектной моделью: объявлять объекты для книг, которые вам нужны, чтобы отслеживать и назначать книги для них. Такие объекты не зависят от того, что является «активным» или «выбранным». Например:

Dim wkbOriginal as Excel.Workbook 
Dim wkbNew as Excel.Workbook 

Set wkbOriginal = ActiveWorkbook 
'Do things here 
Set wkbNew = Workbooks.Add 
'Do more things 
wkbNew.Close 
'wkbOriginal is still accessible and can be used in your code