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

时间:2014-02-05 17:03:09

标签: excel vba excel-vba

我正在尝试遍历并打开名为(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的程序,它运行得很好。

2 个答案:

答案 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(),除非当前目录恰好是您正在搜索的目录。最好永远不要依赖于那种情况。