使用VBA关闭文件

时间:2014-04-29 15:25:57

标签: excel vba

我有一个宏在一个文件夹中打开几个文件并将一个表复制到主文件... 这是我的代码的一部分

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

帮助

2 个答案:

答案 0 :(得分:3)

您希望在打开工作簿时获取该工作簿的句柄。为此,请创建一个工作簿变量并将其设置为打开的工作簿。

另请注意,我在复制(openedWorkbook.Sheets("Sheet1").Copy)时专门引用了该工作簿,这是因为您打开一个新文件意味着它不是活动文件,而只是使用Sheets(或{ {1}}或range或许多引用的对象)没有明确声明此子进程从哪个父对象Excel使用活动父对象。有时这是错误的。最好明确声明从哪里引用内容,这样就不会有任何意外。

cells

答案 1 :(得分:0)

你可以这样做:

Workbooks(openfiles(x)).Close

现在你的方式就是打开Workbooks(x),其中xWorkbooks Collection对象的索引。 Workbooks(x)与您在该循环中打开的文件不同。