关于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(1, tempStr, " ")                              '为UNICODE
    P = InStr(1, tempStr, Chr$(0))                  '为UNICODE
    Debug.Print tempStr & "   p=" & P

If P = 0 Then                     '如果只选择了一个文件

P = InStrRev(tempStr, "\")                          'P取得"\"所在位置
        tempFileName(0) = Left$(tempStr, P - 1)
        tempFileName(1) = Mid$(tempStr, P + 1)
        tempFileName(0) = IIf(Right$(tempFileName(0), 1) <> "\", tempFileName(0) & "\", tempFileName(0))
        '        tempFileName(0) = GetFilePath(tempStr)
        '        tempFileName(1) = GetFileName(tempStr)
    Else                                                         '选择了多个文件
        Do While tempStr <> ""
            P = InStr(tempStr, Chr$(0))                   '为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
        tempFileName(0) = IIf(Right$(tempFileName(0), 1) <> "\", tempFileName(0) & "\", tempFileName(0))    '处理路径
    End If
    '返回文件名数组
    OpenFile = tempFileName
    '还原为单选
    OpenFileDialog.Flags = 0
    '------------------------------------------------
    '    Exit Function
    '    '----------------
ToExit:
    ErrorLog "modFileOption\OpenFile"
    Resume Next

End Function

第二种方法==================================================

Public Function OpenFile(strFileInfor As String, strFileType As String, blnIsMulti As Boolean, OpenFileDialog As Control, StrIntdir As String) As String()
    On Error GoTo ToExit '打开错误陷阱
    '------------------------------------------------
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '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.InitDir = StrIntdir
    OpenFileDialog.FileName = ""
    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                       '文件个数
    '提取路径
    tempFileName = Split(tempStr, Chr$(0))
    If UBound(tempFileName) = 0 Then   '选择一个文件
        ReDim tempFileName(1)
        tempFileName(0) = GetFilePath(tempStr) '提取路径
        tempFileName(1) = GetFileName(tempStr) '取文件名
    Else
        选择多个文件

tempFileName(0) = IIf(Right$(tempFileName(0), 1) <> "\", tempFileName(0) & "\", tempFileName(0)) '    '处理路径
        For i = 1 To UBound(tempFileName)
            tempFileName(i) = tempFileName(i)
        Next i
    End If
    OpenFile = tempFileName
    '还原为单选
    OpenFileDialog.Flags = 0
    '------------------------------------------------
    Exit Function
    '----------------
ToExit:
    ErrorLog "modFileOption\OpenFile"
    Resume Next
End Function


来自: http://hi.baidu.com/%B7%BF%B6%F7%BA%EA/blog/item/571de87a7555f0e82e73b38a.html


VB部分相关文章推荐:

※vb中line的用法[转]

※画图工具的VB实现

※VB 一个获得自己外网 IP 地址的程序代码

※VB程序中实现IP地址子网掩码网关DNS的更改  [转]

※在 VB 中应用 FSO 对象模型介绍(摘自网络)

※[转] Vb中FSO 对象的介绍

※VB 画坐标轴

※VB 二进制文件的操作

※[VB]BMP转JPGVB中KeyCode常数用法

※vb实时曲线的绘制和保存

※VB操作EXCEL

※vb初学回顾:最大公约数 最小公倍数 素数求取

※vb 关于窗口样式的API以及处理文本的API参考

※【引用】在VB6.0中实现弹出式菜单的几种方法

※【引用】URLDownloadToFile_VB下载文件!

※利用WinRar压缩和解压缩文件

※VB 剪切板

※VB实现指示窗口中拖动方框的程序

※VB绘制走动的表针

※如何用VB制作DLL文件

※【引用】VB修改IP地址

※VB多窗体退出代码

※[转]VB:如何检测到U盘的插拔(源代码)

※巧用SendMessage函数扩展Treeview功能

※vb中如何在任务管理器里面隐藏应用程序进程

※如何实现VB与EXCEL的无缝连接

※一个API方式存取日志文件的模块[VB]

※VB用记录集填充表格函数

※VB打开文本文件各种方法

※vb ClipBoard 剪切板应用(复制剪切粘贴)

※【引用】窗口处理技巧大全 vb(窗体控件)

※【转】 Md rd命令之VB

※vb:读写文本文件

※在vb中实现真正锁定的带自定义菜单的文本控件

※【引用】使用CommonDialog的ShowSave后如何判断是保存还是※取消?

※vb 关于commondialog的多选VB获取Windows操作系统所有版本

※vb UTF文本文件访问

※VB编程中的Unicode vs Ansi

※VB编PiView4注册机

※VB获取超过2G文件的大小

※比CopyMemory还要快的函数SuperCopyMemory

※VB:编程效率快步提高之:十七种可用一行代码完成的技巧

※VB画出来的五星红旗

※Qt第一印象——Qte与Qt


更多精彩>>>

vb 关于commondialog的多选相关推荐

  1. 【转】vb 关于commondialog的多选

    代码如下: Function OpenFile(strFileInfor As String, strFileType As String, blnIsMulti As Boolean, OpenFi ...

  2. VB中CommonDialog示例

    VB中CommonDialog示例 从project->components,选中microsoft common dialog control 6.0,点击"确定",会有C ...

  3. VB的CommonDialog控件的使用

    vb的CommonDialog控件的使用   使用CommonDialog控件 CommonDialog控件提供诸如打开和保存文件.设置打印选项.选择颜色和字体等操作的一组标准对话框.运行 Windo ...

  4. vb 6.0服务器组件选哪个,Visual Basic6.0

    Visual Basic6.0简称vb6.0,是款可视化的.面向对象的(oop).快速的事件驱动编程语言,支持多种程序语言的编写和编译,轻松使建立应用程序的GUI系统. Visual Basic6.0 ...

  5. [转载]VB中CommonDialog控件的使用

    CommonDialog控件 1.添加到工具箱 执行菜单命令:工程 | 部件| 使Microsoft CommonDialog Contral 6.0复选框有效. 在工具箱中双击CommonDialo ...

  6. vb 6.0服务器组件选哪个,VB 6.0包括几种版本?分别是什么?

    满意答案 xiangyutashu 推荐于 2019.10.14 采纳率:40%    等级:12 已帮助:6857人 Visual Basic 的版本 Visual Basic 有三种版本可以使用, ...

  7. ※部分VB文章汇总C※

    ★第十部分 ★ ※VB 删除带子文件夹和文件的文件夹※ ※VB选择文件夹并取文件夹名※ ※VB谨慎使用IsMissing函数※ ※VB 冒泡算法※ ※[转]注册ActiveX控件的几种方法(转) 分享 ...

  8. VB 打开txt,bat,jpg 任意后缀程序

    老马写的一个程序不错调用起来还真是方便啊 ! 模块内容: Option Explicit Public Declare Function ShellExecute Lib "shell32. ...

  9. ※部分VB文章汇总A※

    编前篇 ★微软公告:Visual Basic 6 完全兼容 Windows 8 的整个产品周期 ★Visual Basic 十年风云 ★微软 Small Basic 简体中文版 已经发布了 ★VB:如 ...

最新文章

  1. Sinew Ex深度发掘金融衍生品市场价值
  2. mysql 9.0创建数据库_数据库基础学习——MySQL数据库知识小结(9)
  3. 和ur的区别_UR机械臂simscape正逆解仿真
  4. centenos安装mysql,Cento7 安装mycat和mycat-eye
  5. C语言,使用union了解内存
  6. 企业微信H5_网页jssdk调用 config和agentconfig的区别
  7. navicat er图没有连线_迁徙图?流向图?城市关系强度图?
  8. mysql join越多性能_mysqljoin的原理和优化
  9. 深入理解cookie
  10. php中循环用冒号,for循环条件里冒号是什么作用?
  11. 特斯拉电池检测_电动车开几年衰减大电池不行了?特斯拉:在我这儿不是事儿...
  12. 算法学习(十九)——A3C
  13. 图片轮换-jQuery
  14. srt转vtt——在线转换工具
  15. 【初探篇】申请阿里云免费SSL证书并配置https访问实战
  16. 山东超级计算机神威,世界最快超级计算机“神威·太湖之光”获得100多项应用成果...
  17. 位操作符左移问题(<<)如果char类型左移后位数超出一字节如何打印?
  18. 安卓 微信公众号 默认不操作拦截回退失败
  19. MySQL中 (GROUP BY 用法)和(ORDER BY用法)
  20. Springboot+vue+websocket 实现前后台主动通信

热门文章

  1. 面部识别 vs 情绪状态,你还能守住自己的秘密吗?
  2. 5G 登上“神坛”,区块链裁员求生!
  3. 如何使用 SpringCloud 搭建服务注册中心?
  4. 为什么程序员对旧代码深恶痛绝?
  5. 为什么程序员愿意加入管理糟糕的创业公司?
  6. Google,一切皆为 AI!
  7. power bulider 9.0 如何将sql语句查询的值返回给变量_SQL—你应该知道的子查询
  8. J2EE的核心API与组件
  9. php 打包下载网络图片,php多张图片打包下载
  10. barco控制软件支持linux_vnc远程控制软件linux,在linux系统上能够使用的vnc远程控制软件...