使用VBA在Excel中填充表单

所以我有一个基于不同文件创build图表的表单。 我试图编写这样的代码:用户单击“获取数据”

窗体打开

用户单击从中获取文件的目录

代码打开目录,并以gmn开头的文件名forms填充combobox

用户单击他们想从中获取数据的文件

调用macros并添加所有数据

我不擅长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 

在这里输入图像说明

这应该填充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:虽然我部分同意文件对话框可能是一个更好的方法,但我想这种方法也可以使用户更容易。 我不明白为什么意见build议GetSaveAsFileName,因为你说可能有多个用户select我会去GetOpenFilename,或者,它可能会更好地使用GetFolder