我有一个宏在一个文件夹中打开几个文件并将一个表复制到主文件... 这是我的代码的一部分
x = 1
While x <= UBound(openfiles)
Workbooks.Open Filename:=openfiles(x)
Sheets("Sheet1").Copy After:=crntfile.Sheets(crntfile.Sheets.Count)
x = x + 1
Wend
Sheets("Sheet1").Copy
我希望在循环到x
之前关闭文件x+1
。
我尝试使用Workbooks(x).Close SaveFiles:= False
,但它关闭了我的主文件crntfile
,而不是文件x
帮助
答案 0 :(得分:3)
您希望在打开工作簿时获取该工作簿的句柄。为此,请创建一个工作簿变量并将其设置为打开的工作簿。
另请注意,我在复制(openedWorkbook.Sheets("Sheet1").Copy
)时专门引用了该工作簿,这是因为您打开一个新文件意味着它不是活动文件,而只是使用Sheets
(或{ {1}}或range
或许多引用的对象)没有明确声明此子进程从哪个父对象Excel使用活动父对象。有时这是错误的。最好明确声明从哪里引用内容,这样就不会有任何意外。
cells
答案 1 :(得分:0)
你可以这样做:
Workbooks(openfiles(x)).Close
现在你的方式就是打开Workbooks(x)
,其中x
是Workbooks
Collection对象的索引。 Workbooks(x)
与您在该循环中打开的文件不同。