Excel - 离开后激活以前的工作簿

时间:2016-01-27 10:20:37

标签: excel vba

我正在使用Excel中的当前工作簿。在VBA中,我做了以下几点:

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

现在," Book1"是新的工作簿。一旦我完成了我需要做的事情,我需要它然后激活原始工作簿,我拥有所有VBA等。

我关闭" Book1"用:

ActiveWindow.Close

但是在一个过程中的下一个Sub中,我无法调用活动工作簿中的任何工作表:

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

因为我得到了一个"下标超出范围"由于工作簿导致的错误"上传文件"实际上并没有被激活。

感谢您抽出宝贵时间来看看这个。

1 个答案:

答案 0 :(得分: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