在子文件夹中打开文件

问题描述 投票:-1回答:1

我有一个名为AT5321.xlsx的文件(这个名字将继续改变)从我想要调用宏的地方:

  1. 转到地址:C:\Atul\Data
  2. 搜索包含与原始文件名称相同的文件夹(例如:AT5321)。文件夹的实际名称如下:F-003-106-AT5321.M
  3. 现在,在打开上面的子文件夹之后,它有一个名为report.xls的文件,必须打开它。
  4. 停止宏

你必须得到,我是一个新手。我希望减轻我日常的Excel任务。

任何轻微的帮助对我都很有价值。

excel vba
1个回答
0
投票

在Cor_Blimey的帖子的帮助..(Loop Through All Subfolders Using VBA

这将循环遍历子文件夹中的所有子文件夹和子文件夹(理论上无限期)。

Public Sub NonRecursiveMethod()
Dim fso, oFolder, oSubfolder, oFile, queue As Collection
Dim FoundFolder as Boolean

Set fso = CreateObject("Scripting.FileSystemObject")
Set queue = New Collection
queue.Add fso.GetFolder("C:\Atul\Data")

Do While queue.Count > 0
    Set oFolder = queue(1)
    queue.Remove 1 'dequeue

    For Each oSubfolder In oFolder.SubFolders
        queue.Add oSubfolder
        If oSubfolder Like "*" & ThisWorkbook.Name & "*" Then 'Replace workbook name if necessary
            Workbooks.Open Filename:=oSubfolder & "\report.xls"
            FoundFolder = True
            Exit For
        End If
    Next oSubfolder
Loop

If FoundFolder = False Then MsgBox "Error: Folder '" & ThisWorkbook.Name & "' could not be found", vbExclamation, "Error"
End Sub

或者,您可以从主文件夹中查看子文件夹

Sub SubFoldersinMainFolder()
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\Atul\Data")
Set subfolders = folder.subfolders

For Each subfolders In subfolders

    If subfolders Like "*" & ThisWorkbook.Name & "*" Then 'Replace workbook name if necessary
        Workbooks.Open Filename:= subfolders & "\report.xls"
        FoundFolder = True
        Exit For
    End If

Next subfolders
If FoundFolder = False Then MsgBox "Error: Folder '" & ThisWorkbook.Name & "' could not be found", vbExclamation, "Error"

End Sub

我必须补充说,“文件夹”这个词现在看起来很奇怪

© www.soinside.com 2019 - 2024. All rights reserved.