繁体   English   中英

如何循环浏览文件夹和子文件夹以打开文件?

[英]How to loop through folder & sub-folder to open a file?

我想使用预定义的变量名称打开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

在此处输入图片说明

在此处输入图片说明

我不懂这段代码!

我使用的是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 ')。

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

可能的第一印象是这可能行不通,但是行之有效。 所以我想请您详细说明一下,我真的不明白这段代码是如何工作的!?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM