【问题标题】:macro - open all files in a folder宏 - 打开文件夹中的所有文件
【发布时间】:2012-06-22 08:41:55
【问题描述】:

我想打开指定文件夹中的所有文件,并有以下代码

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
Loop
End Sub

我遇到的问题是它只是不断尝试重复打开文件夹中的第一个文件并且不会继续。任何人都可以帮忙,我在 VBA 有点新手,真的可以做一些帮助。我正在尝试打开大约 30 个全部为 .xlsx 格式的报告。非常感谢。

【问题讨论】:

  • 您要同时打开一个文件夹中的所有文件吗?

标签: excel excel-2010 vba


【解决方案1】:

你必须在loop之前添加这一行

    MyFile = Dir
Loop

【讨论】:

  • 嗨,罗斯,欢迎来到 StackOverflow!在这里,习惯上通过单击答案旁边的“接受为答案”按钮来感谢人们。它的形状像一个大勾号。这样,您的助手会因帮助您而获得积分,而您也因提供有用的问答页面而获得奖励。
【解决方案2】:

您可以在循环检查语句中使用Len(StrFile) &gt; 0

Sub openMyfile()

    Dim Source As String
    Dim StrFile As String

    'do not forget last backslash in source directory.
    Source = "E:\Planning\03\"
    StrFile = Dir(Source)

    Do While Len(StrFile) > 0                        
        Workbooks.Open Filename:=Source & StrFile
        StrFile = Dir()
    Loop
End Sub

【讨论】:

    【解决方案3】:

    试试下面的代码:

    Sub opendfiles()
    
    Dim myfile As Variant
    Dim counter As Integer
    Dim path As String
    
    myfolder = "D:\temp\"
    ChDir myfolder
    myfile = Application.GetOpenFilename(, , , , True)
    counter = 1
    If IsNumeric(myfile) = True Then
        MsgBox "No files selected"
    End If
    While counter <= UBound(myfile)
        path = myfile(counter)
        Workbooks.Open path
        counter = counter + 1
    Wend
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 2021-01-08
      • 1970-01-01
      • 1970-01-01
      • 2021-03-02
      相关资源
      最近更新 更多