本帖最后由 bcrun 于 2010-04-08 21:20:28 编辑

解决方案 »

  1.   

    http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/571de87a7555f0e82e73b38a.html
    vb 关于commondialog的多选2008年06月19日 星期四 21:55关于commondialog的多选(如何提取文件名?)
    刚写好的,给你一个函数:   
    Function   OpenFile(strFileInfor   As   String,   strFileType   As   String,   blnIsMulti   As   Boolean,   OpenFileDialog   As   Control)   As   String()   
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
              'OpenFileDialog         通用对话框   
              'strstrfileInfor       文件提示   
              'strstrfileType         文件类型,扩展名   
              'blnblnismulti           是否为多选   
              '返回为文件名数组,OpenFile(0)存放文件路径,从1开始存放文件名,包括只有一个文件时的情况。   
              '返回的路径中已经包含了最后的"\"   
              '如果没有选择任何文件,OpenFileFuction(0)返回为""   
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
              '设置打开文件对话框过滤器   
              OpenFileDialog.Filter   =   strFileInfor   &   "|"   &   strFileType   
              '设定是否可以多选   
              If blnIsMulti   Then   
                  OpenFileDialog.Flags   =   &H80200   
                  OpenFileDialog.MaxFileSize   =   1024     '设置使用CommonDialog控件被打开的文件名的最大尺寸   
              Else   
                  OpenFileDialog.Flags   =   0   
              End If   
              OpenFileDialog.ShowOpen   
              '提取各文件名   
              Dim   tempStr   As   String   
              Dim   tempFileName()   As   String   
              tempStr   =   OpenFileDialog.FileName   
              '如果用户取消了,或没有选择任何文件,处理返回仍为数组形式,OpenFileFuction(0)为""   
              If   tempStr   =   ""   Then   
                      ReDim   tempFileName(0)   
                      tempFileName(0)   =   ""   
                      OpenFile   =   tempFileName   
                      Exit   Function   
              End   If   
              Dim P,N As Long   
              P = 0                       '分隔字符位置   
              N = 0                       '文件个数   
              '提取路径   
              ReDim   tempFileName(1)                                    '至少有一个文件   
              P   =   InStr(tempStr,   Chr(160))                         '为UNICODE   
                
              If   P   =   0   Then             '如果只选择了一个文件   
                      P   =   InStrRev(tempStr,   "\")                    'P取得"\"所在位置   
                      tempFileName(0)   =   Left(tempStr,   P   -   1)   
                      tempFileName(1)   =   Mid(tempStr,   P   +   1)   
              Else                                                         '选择了多个文件   
                      Do   While   tempStr   <>   ""   
                              P   =   InStr(tempStr,   Chr(160))            '为UNICODE   
                              ReDim   Preserve   tempFileName(N)   
                                
                              '如果没有空格(只剩余一个文件)   
                              If   P   =   0   Then   
                                      tempFileName(N)   =   tempStr   
                                      Exit   Do   
                              Else   
                                      tempFileName(N)   =   Left(tempStr,   P   -   1)   
                                      tempStr   =   Mid(tempStr,   P   +   1)   
                                      N   =   N   +   1   
                              End   If   
                      Loop   
              EndIf      
              '处理路径   
              tempStr   =   tempFileName(0)   
              tempFileName(0)   =   IIf(Len(tempStr)   =   3,   tempStr,   tempStr   &   "\")   
              '返回文件名数组   
              OpenFile   =   tempFileName   
              '还原为单选   
              OpenFileDialog.Flags   =   0   
                
    End   Function 
      

  2.   

    http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/571de87a7555f0e82e73b38a.html
    vb 关于commondialog的多选2008年06月19日 星期四 21:55关于commondialog的多选(如何提取文件名?)
    刚写好的,给你一个函数:   
    Function   OpenFile(strFileInfor   As   String,   strFileType   As   String,   blnIsMulti   As   Boolean,   OpenFileDialog   As   Control)   As   String()   
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
              'OpenFileDialog         通用对话框   
              'strstrfileInfor       文件提示   
              'strstrfileType         文件类型,扩展名   
              'blnblnismulti           是否为多选   
              '返回为文件名数组,OpenFile(0)存放文件路径,从1开始存放文件名,包括只有一个文件时的情况。   
              '返回的路径中已经包含了最后的"\"   
              '如果没有选择任何文件,OpenFileFuction(0)返回为""   
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''   
              '设置打开文件对话框过滤器   
              OpenFileDialog.Filter   =   strFileInfor   &   "|"   &   strFileType   
              '设定是否可以多选   
              If blnIsMulti   Then   
                  OpenFileDialog.Flags   =   &H80200   
                  OpenFileDialog.MaxFileSize   =   1024     '设置使用CommonDialog控件被打开的文件名的最大尺寸   
              Else   
                  OpenFileDialog.Flags   =   0   
              End If   
              OpenFileDialog.ShowOpen   
              '提取各文件名   
              Dim   tempStr   As   String   
              Dim   tempFileName()   As   String   
              tempStr   =   OpenFileDialog.FileName   
              '如果用户取消了,或没有选择任何文件,处理返回仍为数组形式,OpenFileFuction(0)为""   
              If   tempStr   =   ""   Then   
                      ReDim   tempFileName(0)   
                      tempFileName(0)   =   ""   
                      OpenFile   =   tempFileName   
                      Exit   Function   
              End   If   
              Dim P,N As Long   
              P = 0                       '分隔字符位置   
              N = 0                       '文件个数   
              '提取路径   
              ReDim   tempFileName(1)                                    '至少有一个文件   
              P   =   InStr(tempStr,   Chr(160))                         '为UNICODE   
                
              If   P   =   0   Then             '如果只选择了一个文件   
                      P   =   InStrRev(tempStr,   "\")                    'P取得"\"所在位置   
                      tempFileName(0)   =   Left(tempStr,   P   -   1)   
                      tempFileName(1)   =   Mid(tempStr,   P   +   1)   
              Else                                                         '选择了多个文件   
                      Do   While   tempStr   <>   ""   
                              P   =   InStr(tempStr,   Chr(160))            '为UNICODE   
                              ReDim   Preserve   tempFileName(N)   
                                
                              '如果没有空格(只剩余一个文件)   
                              If   P   =   0   Then   
                                      tempFileName(N)   =   tempStr   
                                      Exit   Do   
                              Else   
                                      tempFileName(N)   =   Left(tempStr,   P   -   1)   
                                      tempStr   =   Mid(tempStr,   P   +   1)   
                                      N   =   N   +   1   
                              End   If   
                      Loop   
              EndIf      
              '处理路径   
              tempStr   =   tempFileName(0)   
              tempFileName(0)   =   IIf(Len(tempStr)   =   3,   tempStr,   tempStr   &   "\")   
              '返回文件名数组   
              OpenFile   =   tempFileName   
              '还原为单选   
              OpenFileDialog.Flags   =   0   
                
    End   Function 
      

  3.   

    Private Sub Text1_Click(Index As Integer)
      id=index
      运行打开文件
    end sub
    Private Sub 打开文件
    If CommonDialog1.FileName <> "" Then
      text1(id).text=CommonDialog1.FileName
    end if
    end sub
    只是给你个思路,程序未完善.
      

  4.   

    楼主怎么了,不是在你这帖里已给你解答了吗?:)http://topic.csdn.net/u/20100304/22/919fc4c3-0eb2-4279-829c-70348810c5a5.html
    Commondialog控件,请大家帮帮忙,,谢谢... [控件] 
      

  5.   


    Private Sub Command1_Click()
        Dim a() As String, i As Integer, num As Integer
        CommonDialog1.FileName = ""
        CommonDialog1.Flags = 512
        CommonDialog1.ShowOpen
        a = Split(CommonDialog1.FileName)
        num = UBound(a)
        If num > Text1.Count Then num = Text1.Count
        For i = 1 To num
            Text1(i - 1) = a(i)
        Next
    End Su