2013-03-01 55 views
2

我現在有一個宏,查找特定的文件名,並根據其結果它專門運行特定的子那個文件:使用多個通配符的.csv文件名

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 

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

+0

你試過了嗎? (當然,在一個測試文件夾中,有實際文件的幾個副本) – chuff 2013-03-01 22:25:54

+2

所有你想要的東西真的很容易 - 但你試圖做到這一點? – 2013-03-01 22:50:58

回答

0

VBA支持Like關鍵字,這樣就可以使那些通配符的工作只要使用Like代替=

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

要從無論你想獲得的文件,而不是僅僅是當前目錄,嘗試Application.FileDialog代替Application.GetOpenFilenameApplication.FileDialog.SelectedItems返回完整路徑。

1

使用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 
+0

我的+1,但我希望OP會自己產生這個) – 2013-03-02 08:10:41

+0

@brettdj我不認爲這是正確的。 OP不想遍歷符合通配符的所有文件,他想檢查選定的文件以查看它們是否與通配符匹配。 – 2013-03-02 11:35:08

相關問題