簡體   English   中英

對.csv文件名使用多個通配符

[英]Using Multiple Wildcards for .csv filenames

我目前有一個宏,用於查找特定的文件名,並根據結果運行專門用於該文件的特定子文件:

Sub CommandButton3_Click()
Dim i As Integer
Dim fname As Variant
Dim filepath As Variant
'filepath = Application.GetOpenFilename(FileFilter:="Excel File (*.csv), *.scv")

fname = Application.GetOpenFilename(FileFilter:="Excel File (*.csv), *.scv",    
Title:="Please select a stat file", MultiSelect:=True)
filepath = ThisWorkbook.Path

For i = 1 To UBound(fname)
    If fname(i) = filepath & "\" & "Nodes.csv" Then
        Workbooks.Open (fname(i))
        Call Node
    ElseIf fname(i) = filepath & "\" & "IOGroups.csv" Then
        Workbooks.Open (fname(i))
        Call IOGrp
    ElseIf fname(i) = filepath & "\" & "ManagedDiskGroups.csv" Then
        Workbooks.Open (fname(i))
        Call MdiskGrp
    ElseIf fname(i) = filepath & "\" & "ManagedDisks.csv" Then
        Workbooks.Open (fname(i))
        Call Mdisk
    ElseIf fname(i) = filepath & "\" & "Ports.csv" Then
        Workbooks.Open (fname(i))
        Call Ports
    ElseIf fname(i) = filepath & "\" & "Subsystem.csv" Then
        Workbooks.Open (fname(i))
        Call Subsystem
    ElseIf fname(i) = filepath & "\" & "Volumes.csv" Then
        Workbooks.Open (fname(i))
        Call Volumes        
     Else            
    End If
Next i
End Sub

我希望能夠在名稱中包含2個通配符,即:

If fname(i) = filepath & "\" & "*Node*.csv" Then

這甚至是一種可能,需要這樣做的原因是文件的名稱不同,但是每個文件名中都有根詞,它們總是相同的,唯一的問題是根詞之前和之后通常都有某些東西。 有任何想法嗎? 另外,當前包含此宏的工作簿必須與用於工作的文件位於同一目錄中,是否可以更改此方法? 謝謝!

使用Dir ,它會為您提供該目錄中符合通配符的文件的即時列表(而不是使用Like測試每個文件)

Sub GetFIles()
Dim Strfile As String
Strfile = Dir(ThisWorkbook.Path & "\" & "*node*.csv")
Do While Len(Strfile) > 0
'do something with returned files
Debug.Print Strfile
Strfile = Dir
Loop
End Sub

VBA支持Like關鍵字,因此您可以使用Like代替=來使這些通配符起作用:

If fname(i) Like filepath & "\" & "*Node*.csv" Then...

要從所需位置而不是僅從當前目錄獲取文件,請嘗試Application.FileDialog而不是Application.GetOpenFilename Application.FileDialog.SelectedItems返回完整路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM