Dim FileName As String
Dim AppPath As String
AppPath = IIf(Right$(App.Path, 1) = "\", App.Path, App.Path & "\")
FileName = AppPath & "数据\计算表.xls"
'如果你的程序放在盘符的根目录,比如放在D盘
'你直接用 App.Path & "\数据\" & "计算表.xls"
'得到的是 D:\\数据\计算表.xls
'所以要判断一下
'如果你能保证程序不在盘符下,则可以不用这样处理
If Dir(FileName) = "" Then
MsgBox "表已不存在。"
Combo1 = ""
Exit Sub
End If
VB中提供的成员函数dir返回一个满足指定类型或指定文件属性的文件名,目录名或卷标名。dir函数的语法结构为:
Member Function Dir[(Pathname[,attributes])] As String
其中参数Pathname通常为一个文件名,此文件名可以包含目录或文件夹以及驱动器符号,如果没有找到指定的Pathname,dir语句将返回一个零长度的字符串(""),支持多字符通配符和单字符通配符。需要注意的是:
1.在程序中第一次调用dir函数时必须指明pathname参数,否则会产生运行错误;
2.dir函数只返回满足pathname条件的第一个文件名或目录名,要得到其余满足条件的文件名,可以再次调用dir函数而不用带参数,当没有匹配的文件,dir函数返回零长度的字符串,而此时如果再想调用dir函数,必须指定pathname参数,否则出现运行错误;
3.在没有检索到满足当前pathname匹配条件的文件时可以改变新的pathname值,但不能再次递归调用dir函数;
4.调用dir函数时将属性参数设置为vbdirectory并不能连续返回子目录,仅返回当前目录下的目录。
if Dir(App.Path & "\数据\" & "计算表.xls") ="" then
MsgBox "表已不存在。"
Combo1 = ""
Exit Sub
End If
这样比较简单.
需注意,如果你的程序是在根目录下,ASS.PATH返回是有\号的,如c:\ ,所以需处理一下
if Dir(replace(App.Path & "\数据\" & "计算表.xls","\\","\") ="" then
MsgBox "表已不存在。"
Combo1 = clear
Exit Sub
End If
就是如在根目录下,把c:\\数据\计算表.xls 改成 c:\数据\计算表.xls 再用DIR查找
还有
App.Path & "\数据\" & "计算表.xls"
可以直接改成
App.Path & "\数据\计算表.xls"
因为中间没有变量了
问题是没问题,但是,Dir出来的只是文件部分,路径是不带的,所以FileName是不带路径的。后边要处理FileName时,只用FileName,就会出错。
最好写成(App.Path &后紧接着带\,可以兼顾到目录在盘符下或非盘符下的路径):
Dim Filename As String
FileName = App.Path & "\数据\" & "计算表.xls"
If Dir(FileName) = "" Then
MsgBox "表已不存在。"
Combo1 = ""
Exit Sub
End If
Combo1.text = ""
别的是对的