我正在使用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
因为我得到了一个"下标超出范围"由于工作簿导致的错误"上传文件"实际上并没有被激活。
感谢您抽出宝贵时间来看看这个。
答案 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