使用VBA在Excel中填充表单

时间:2016-06-27 19:58:25

标签: excel vba excel-vba

所以我有一个基于不同文件创建图表的表单。 我试图编写执行此操作的代码: 用户点击"获取数据"

表单打开

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

代码打开目录并以文件名以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

enter image description here

1 个答案:

答案 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