Dim mydir As String, i As Integer
Private Sub Command1_Click()
'使用comdialog选择多项文件,其finename属性中,文件名之间是用空格隔开的.
ComDialog.Flags = cdlOFNAllowMultiselect + cdlOFNExplorer
ComDialog.FileName = ""
ComDialog.ShowOpen
If Len(ComDialog.FileName) = 0 Then Exit Sub '如果什么都没有选择,直接退出
i = InStr(1, ComDialog.FileName, Chr(0)) '取得第一个空格的位置
If i = 0 Then '如果为0,说明没有空格,也就是只选择一个文件,直接加入listbox
Lst1.AddItem ComDialog.FileName 'lst1是listbox
Else
mydir = Mid(ComDialog.FileName, 1, i) '取得第一个空格前的字符,也就是目录名
If Len(mydir) = 4 Then mydir = Left(mydir, 3) '如果只有四个字符,说明是在磁盘的根目录下,也就是c:\,这时候得把 \ 字符去掉
Do While i <> 0 '循环,直到没有匹配的空格
Lst1.AddItem Left(mydir, Len(mydir) - 1) & "\" & Mid(ComDialog.FileName, i + 1) ' Len(mydir) - 1)是为了把空格去掉,否则字符连接不成功,i+1是从空格之后开始取字符
i = InStr(i + 1, ComDialog.FileName, Chr(0)) '寻找下一个匹配的字符
Loop
End If
End Sub
'本人只知其然,不知其所以然,只能整出结果来,更具体的原因,只能靠你自己摸索了.