VBA – 尝试打开文件夹中的所有工作簿

我正在尝试循环并打开位于与我的macros所在工作表相同的目录中的文件夹(BU)中的所有文件。 我能够看到myfile正确地获取第一个文件名,但是当工作簿试图打开时,出现运行时错误1004。 任何帮助,将不胜感激。

Sub LoopAndOpen() Dim myfile As String, Sep As String, stringA As String, path1 As String Sep = Application.PathSeparator path1 = ActiveWorkbook.Path & Sep & "BU" & Sep myfile = Dir(path1 & "*.xlsm") Do While myfile <> "" Workbooks.Open myfile myfile = Dir() Loop End Sub 

编辑:我结束了使用Unicco的程序,它完美的工作。

您可以改用这个程序。

修改“ThisWorkbook.Path”和“.xlsm”到你想要的目的。 如果要使用macros同时打开Excelfiles和Excelfiles,请使用InStr(objFile,“.xlsm”)或InStr(objFile,“.xlsx”)。

 Option Explicit Sub OpenAllFiles() Dim objFSO As Object Dim objFolder As Object Dim objFile As Object Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(ThisWorkbook.Path) For Each objFile In objFolder.Files If InStr(objFile, ".xlsm") Then Workbooks.Open (objFile) End If Next End Sub 

Dir()仅返回文件名,而不是完整path:除非当前目录恰好是您正在search的目录,否则您需要将完整path传递给Open() 。 最好不要依赖这种情况。