首页 > 解决方案 > Excel VBA:文件夹名称未知但扩展名已知的文件夹路径

问题描述

我有这个Excel文件用于修改和导出数据集。它导出到同一文件夹,位于:

C:\BASE\yyyyyy.c8\xxxxxx.cv\Addresses.xlsm

我想将其存储.xlsm在:

C:\BASE\yyyyyy.c8\

相反,但我仍然需要导出到

C:\BASE\yyyyyy.c8\xxxxxx.cv\

文件夹。然而,这很棘手,因为xxxxxx.cv文件夹名称会更改项目到项目,但是.cv此文件夹名称的扩展名始终相同。

目前它使用以下方法将导出文件导出到 excel 文件的根文件夹:

convFileName = ActiveWorkbook.Path & "\conv" & convTableNumber

我希望它基本上像这样工作,显然这不起作用,但我将如何实现这个功能?

 convFileName = ActiveWorkbook.Path & \*.cv & "\conv" & convTableNumber

编辑。解决方案:

Dim sFile As String, sPathSeek As String, sPathMatch As String
On Error Resume Next
sPathSeek = ActiveWorkbook.Path & "\*.cv"
sFile = Dir(sPathSeek, vbDirectory)

Do While Len(sFile) > 0
    If Left(sFile, 1) <> "." Then
        If (GetAttr(sFile) And vbDirectory) = vbDirectory Then
            sPathMatch = sFile
            Exit Do
        End If
    End If
    sFile = Dir
Loop

convFileName = ActiveWorkbook.Path & "\" & sPathMatch & "\conv" & convTableNumber

标签: excelvbawildcard

解决方案


按照这个说法

是的,在 C:\BASE\yyyyyy.c8\ 中总是只有一个名称以 .cv 结尾的文件夹

我在这里借用了这个代码表格并稍微调整了一下

Sub Find_SubFolder()
    Dim sFile As String, sPathSeek As String, sPathMatch As String

    Const sMainPath As String = "C:\BASE\yyyyyy.c8\"

    On Error Resume Next
    sPathSeek = sMainPath & "*.cv"
    sFile = Dir(sPathSeek, vbDirectory)

    Do While Len(sFile) > 0
        If Left(sFile, 1) <> "." Then
            If (GetAttr(sFile) And vbDirectory) = vbDirectory Then
                sPathMatch = sFile
                Exit Do
            End If
        End If
        sFile = Dir
    Loop

    'From here you can put your code to save your file...
    Debug.print "C:\BASE\yyyyyy.c8\" & sPathMatch & "\"
End Sub

推荐阅读