【问题标题】:How to loop through folder & sub-folder to open a file?如何遍历文件夹和子文件夹来打开文件?
【发布时间】:2018-10-19 20:44:19
【问题描述】:

我想用我预定义的变量名打开一个 Excel 文件。

根据本月,文件名将是 PIF_08.31.2018,但下个月的文件名将是 PIF_09.30.2018。我想查看文件夹和子文件夹并打开指定的文件。

我收到一条错误消息,提示找不到文件,但很明显它在子文件夹中。

我怀疑我的代码没有进入任何文件夹或没有进入子文件夹。

我的文件夹结构是 Main -> Year(即 2018)-> Month(即 8 月 8 日)。

在每个月的文件夹中,我有 2 个文件,我想打开指定的一个。

Sub test()
    Dim FileSystem As Object
    Dim HostFolder As String
    HostFolder = "S:\Main\"
    Set FileSystem = CreateObject("Scripting.FileSystemObject")
    DoFolder FileSystem.GetFolder(HostFolder)
End Sub

Sub DoFolder(Folder)
    Dim SubFolder
    Dim CurrFile
    Dim fname
    Dim folderpath
    Dim File       
    fname = "PIF_" & Format(WorksheetFunction.EoMonth(Now, -2), "MM.D.YYYY") & ".xlsx"
    'PIF_08.31.2018
    For Each SubFolder In Folder.subfolders
        DoFolder SubFolder
    Next   
    For Each File In Folder.Files
        If File.Name = fname Then
            Workbooks.Open (File.Path)
        End If
    Next
End Sub

【问题讨论】:

  • 您永远不会在fname 中包含文件夹(或子文件夹)的名称。它总是在同一个文件夹中查找文件,如果它不在那个文件夹中,它总是会失败。
  • 我希望 vba 为我检测我不会指定的内容。如何修复我的代码以使其正常工作?
  • 您需要将完整路径添加到Workbooks.Open (fname)FileSystemObject 可能会在您的搜索路径中查找,但 Excel 肯定不会。
  • 谢谢,我将我要求 excel 打开的代码部分更改为 Workbooks.Open(File.Path) 并且它正在工作,这是正确的吗?
  • VBA 不会自动为您更改文件夹。在检查文件是否存在之前,您需要将其添加到fname 的前面。如果File.NameC:\Temp\Somefile.xlsx,而fname 只是Somefile.xlsx,则它们永远不会匹配。

标签: excel vba


【解决方案1】:

我看不懂这段代码!?

我使用的是 Excel 2003,没有 EoMonth 功能,但据我所知,您使用它可能没问题,除非您使用的是“MM.D.YYYY”而不是“MM.DD。 YYYY”。如果那不能解决您的问题(不应该),那么 VBA 可能会以不同的方式“翻译”日期。无论如何,我都不会打扰,因为您只需使用 VBA(没有 EoMonth)就可以实现所有这些:

fname = "PIF_" & Format(DateSerial(Year(Date), (Month(Date) + 1) - 2, 0), _
    "MM.DD.YYYY") & ".xlsx"

我已经对其进行了调整,因此您可以像使用 EoMonth 函数一样使用它(注意“- 2”)。

顺便说一句,代码从头到尾循环了几次,直到最终找到并打开工作簿。

可能的第一印象是这不可能工作,但它正在工作。所以请你详细说明一下,我真的不明白这段代码是如何工作的!?

【讨论】:

  • 谢谢,当我使用Workbooks.Open (File.Path) 时,它工作得很好,所以我不必指定实际的文件夹或路径。
猜你喜欢
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
相关资源
最近更新 更多