我正在尝试遍历并打开名为(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的程序,它运行得很好。
答案 0 :(得分:4)
您可以改用此程序。
将“ThisWorkbook.Path”和“.xlsm”修改为您想要的目的。如果要打开标准以及带有宏的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
答案 1 :(得分:2)
Dir()
仅返回文件名,而不是完整路径:您需要将完整路径传递给Open()
,除非当前目录恰好是您正在搜索的目录。最好永远不要依赖于那种情况。