我已经在excel 2010 VBA(7.0)上创建了Userform,该文件将传输用户通过.GetOpenFileName属性选择的文件。然后将所选文件的文件路径插入ListBox

我的问题是目前正在尝试使用MultiSelect,但是当我给.GetOpenFileNameMultiselect属性将文件路径发送到我的ListBox(启用多行)时,会看到一种类型GetOpenFileName代码行显示的不匹配错误。代码示例如下:

Private Sub CommandButton1_Click ()
Dim strFilePath As String

StrFilePath = Application.GetOpenFilename (,,,, MultiSelect:= True)
If strFilePath = "False" Then Exit Sub

FilesFrom.Value = strFilePath

End Sub


FilesFrom是列表框,我希望文件路径进入。我的代码可以使用户选择一个文件并进行传输,但不允许我使用多个文件路径填充此列表框。

关于如何允许用户选择多个文件并将文件路径插入名为FilesFrom的列表框中的任何想法?

最佳答案

问题是MultiSelect返回一个Array

下面的代码应该正是您想要的。它适合多选或单选。

 Private Sub CommandButton1_Click()
      'GetOpenFile MultiSelect will return an Array if more than one is selected
      Dim FilePathArray As Variant
      FilePathArray = Application.GetOpenFilename(, , , , MultiSelect:=True)

      If IsArray(FilePathArray) Then

           Dim ArraySize As Long
           ArraySize = UBound(FilePathArray, 1) - LBound(FilePathArray, 1) + 1

           Dim ArrayPosition As Long
           For ArrayPosition = 1 To ArraySize

                If Not FilePathArray(ArrayPosition) = Empty Then
                'Replace "UserForm1" with the name of your Userform
                UserForm1.FilesFrom.AddItem (FilePathArray(ArrayPosition))
                End If

           Next ArrayPosition

      ElseIf FilePathArray <> False Then

           'Replace "UserForm1" with the name of your Userform
           UserForm1.FilesFrom.AddItem (FilePathArray)

      End If
 End Sub

07-26 09:15