所以我有一个基于不同文件创建图表的表单。 我试图编写执行此操作的代码: 用户点击"获取数据"
表单打开
用户单击从中获取文件的目录
代码打开目录并以文件名以gmn
开头的形式填充组合框用户点击要从中获取数据的文件
调用宏并添加所有数据
我对vba或excel没有任何好处,但是我嘿,我正在学习。所以问题是我知道用什么来获取文件?我试着查看其他帖子,但他们只是获取特定文件。任何帮助是极大的赞赏!如果需要更多信息,请告诉我!
代码和图片:
Private Sub ComboBoxDir_Change()
'populate our directories
Dim DirNow As String
DirNow = Dir("\\na.luk.com\wooster\DATA\NL-LUS-E\EAD\Tom_Freshly\SAE2\TestsDone\GMN10055\Ford-A oil\Inspection\" + Me.ComboBoxDir + "\*", vbNormal)
'loop to fill up pull down
Do While DirNow <> ""
'add items to combo
UserFormDataa.ComboBoxFiles.AddItem (DirNow)
'get next dir
DirNow = Dir()
Loop
'Now add files
Call GetFilesFromDirect("")
End Sub
Private Sub GetFilesFromDirect(DirectNow As String)
Dim file As Variant
file = Dir("DirectNow")
While (file <> "")
If InStr(file, "Gmn*") > 0 Then
ComboBoxFiles.AddItem (file)
End If
file = Dir
Wend
End Sub
Private Sub ComboBoxFiles_Change()
End Sub
Private Sub GetSheets_Click()
Call GetData
End Sub
答案 0 :(得分:1)
这应填充DirNow地址
中以“gmn”开头的所有元素...
Do While DirNow <> ""
Dim oFSO as Object
Dim FileItem as Variant
Dim oFolder as Object
Set oFSO = CreateObject("Scripting.FileSystemObject") 'library needed to do stuff related to file management
Set oFolder = oFSO.GetFolder(DirNow)
UserFormDataa.ComboBoxFiles.Clear 'no previous data needed (if any)
For each FileItem in oFolder.Files
'add items to combo
If Instr(FileItem.Name,"gmn") >0 Then UserFormDataa.ComboBoxFiles.AddItem (FileItem.Name)
'I'd ignore case "GMN" won't be added) If Instr(lCase(FileItem.Name)...
Next FileItem
Loop
...
OT:虽然我部分同意文件对话可能是更好的方法,但我想这种方法也可以让用户更容易。我不明白为什么评论建议使用GetSaveAsFileName,因为您声明可能有多个用户选择GetOpenFilename,或者最好选择GetFolder