[英]Combine multiple csv files with filenames in it as rows on mac terminal
[英]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.