永发信息网

VB CommonDialog1问题,高手帮忙。。。。

答案:3  悬赏:30  手机版
解决时间 2021-03-18 13:13
  • 提问者网友:绫月
  • 2021-03-17 22:08
Private Sub Command1_Click()

Dim a() As String

CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer '多选
CommonDialog1.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen '显示打开对话框

'a = Split(CommonDialog1.FileName, Chr(0)) '获得路径
For i = 1 To UBound(a)
List1.AddItem a(i)
Next i
以上代码只能多选文件名,并添加到list控件中。但是选择一个文件名时候,就不行了。求怎么解决。。。。。急急急急
End Sub
最佳答案
  • 五星知识达人网友:孤独入客枕
  • 2021-03-17 22:52
Private Sub Command1_Click()
Dim a() As String
Dim pos As Integer
CommonDialog1.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer '多选
CommonDialog1.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen '显示打开对话框

a = Split(CommonDialog1.FileName, Chr(0)) '获得路径
If UBound(a) = 0 Then
While InStr(a(0), "\") > 0
a(0) = Right(a(0), Len(a(0)) - InStr(a(0), "\"))
Wend
List1.AddItem a(0)
End If

For i = 1 To UBound(a)

List1.AddItem a(i)
Next i

End Sub

————————————————————————
For i = 1 To UBound(a)
数组从0开始
改成
For i = 0 To UBound(a)

有问题hi我
全部回答
  • 1楼网友:妄饮晩冬酒
  • 2021-03-18 00:55
文件类型过滤应当这么写: commondialog1.filter = "microsoft excel(*.xls) | *.xls" 但是在commondialog1.showdialog 之前加上 commondialog1.filename="" 然后通过判断返回文件名是否为""的方法来判断用户是否点击了"取消"是不对的,因为用户没有输入文件名,点击"确定",返回的文件名也是""。 可以使用如下的方法: 把commondialog1的cancelerror属性设置为 commondialog1.cancelerror = true 这样用户点击了"取消"按钮后,将产生一个错误事件,然后使用vb的错误处理机制进行处理。 可以参考以下方法: 使用 on error goto errproc: 当产生错误时,程序跳转到errproc段继续执行,这样你可以在errproc段写入你想执行的代码。 另外,用户点击取消后,产生的错误事件代码是 32755,在进行相应处理之前,可以先通过err.number判断放回的错误码是不是 32755。
  • 2楼网友:走死在岁月里
  • 2021-03-18 00:17
前面二楼的都不是很全面,主要是当选择一个文件时,filename为完整的路径,当选择多个文件时,除了选择的文件名外,还有一个是此文件所属文件夹路径。 '将你自已代码中改为以下即可解决 a = Split(CommonDialog1.FileName, Chr(0)) For i = IIf(UBound(a) > 0, 1, 0) To UBound(a) List1.AddItem a(i) Next i End Sub
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯