2012-06-26 54 views
0

中的所有文件我打开所有文件中指定的文件夹关闭文件夹

Sub OpenFiles() 
    Dim MyFolder As String 
    Dim MyFile As String 
    MyFolder = "\\ILAFILESERVER\Public\Documents\Renewable Energy\FiTs\1 Planning Department\Marks Tracker\Quality Control Reports" 
    MyFile = Dir(MyFolder & "\*.xlsx") 

    Do While MyFile <> "" 
     Workbooks.Open Filename:=MyFolder & "\" & MyFile 
     MyFile = Dir 
    Loop 
End Sub 

下面的代码是否有可能有一个关闭的文件夹中的所有文件类似的代码。非常感谢在此事上提供的任何帮助。

回答

0

你需要同时打开它们吗?否则:

Sub OpenFiles() 
    Dim MyFolder As String 
    Dim MyFile As String 
    MyFolder = "\\ILAFILESERVER\Public\Documents\Renewable Energy\FiTs\1 Planning Department\Marks Tracker\Quality Control Reports" 
    MyFile = Dir(MyFolder & "\*.xlsx") 
    Dim wb As Workbook 

    Do While MyFile <> "" 
     Set wb = Workbooks.Open Filename:=MyFolder & "\" & MyFile 
     'Do stuff 
     wb.Close False 'The false will close without saving 
     MyFile = Dir 
    Loop 
End Sub 
+0

你好丹 - 是的,他们都必须同时打开,然后我想要同时关闭它们全部 –

+1

也可以循环打开工作簿,如下所示:For Each wbk In Workbooks我相信你可以去wbk.Close – Dan

3

Workbooks.Open将返回对工作簿指针的引用。只要打开工作簿,就将其保存在一个集合中(使用Collection.Add)。如果要关闭所有工作簿,请遍历集合(使用For Each)并关闭每个元素。然后删除集合中的所有元素。

+0

+ 1好建议:) –

1

尝试

Workbooks.Close

从Excel的Visual Basic帮助文档:

这个例子关闭所有打开的工作簿。如果任何打开的工作簿中有更改,Microsoft Excel将显示相应的提示和对话框以保存更改。

+1

要小心,因为这会关闭包含正在运行的VBA代码的工作簿,这可能不是你的意图。 –

+0

@JoelSpolsky感谢您的警告,这是OP考虑的另一种选择。 – JimmyPena