判断文件夹是否存在

lkz912 2001-11-17 06:54:19
我以下代码判断文件夹(D:\bak)是否存在。在不存在时可以创建文件夹,但是在存在时却会出现错误提示:“实时错误'75':路径/文件访问错误”,请大家帮忙解决一下。
If Dir("D:\bak") = "" Then
MkDir "D:\bak"
Else
MsgBox "目录已存在!"
End If

分数不多,答对一定给分!

...全文
391 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxlroad 2002-03-14
  • 打赏
  • 举报
回复
enmity(灵感之源) 的 可用
enmity 2002-03-14
  • 打赏
  • 举报
回复
to:uguess(uguess)

如果按照你的方法,有点是需要补充的,如果目录真的存在,那么,当前目录路径就会被设置为被判断路径,我们应该这样或许会好点:

Private Function IsDirExist(ByVal sDirName As String) As Boolean

Dim o_strPath As String

On Error Resume Next

o_strPath = CurDir

ChDir sDirName

If Err.Number <> 0 Then
IsDirExist = False
Else
IsDirExist = True
End If

ChDir o_strPath

End Function
zyl910 2002-01-28
  • 打赏
  • 举报
回复
来晚了!内容同上!(蹭点分)
uguess 2002-01-28
  • 打赏
  • 举报
回复
判断目录:
Private Function IsDirExist(ByVal sDirName As String) As Boolean

On Error Resume Next

ChDir sDirName
If Err.Number <> 0 Then
IsDirExist = False
Else
IsDirExist = True
End If

End Function
Chimae 2002-01-28
  • 打赏
  • 举报
回复
太感谢你们了!
enmity 2001-11-20
  • 打赏
  • 举报
回复
这个函数与楼上两位仁兄的不同之处在于:

他们判断的是给定目录的属性“是”vbDirectory(目录)
我这里判断是给定目录的属性“有”vbDirectory(目录)

当目录含有不只一个属性,如隐藏、系统等其它属性的时候,第一个判断是不全面的。
enmity 2001-11-20
  • 打赏
  • 举报
回复
to:lkz912(LKZ) 
这不简单了:

Public Function DoesFolderExists(sFolder As String) As Boolean

On Error Goto handleError

If Trim(sFolder) <> vbNullString Then
If (GetAttr(sFolder) And vbDirectory) <> 0 Then
DoesFolderExists = True
Else
DoesFolderExists = False
End If
Else
DoesFolderExists = False
End If
Exit Function

handleError:
DoesFolderExists = False

End Function

即时手写的,没有测试,自己看看吧。
fraser01 2001-11-20
  • 打赏
  • 举报
回复
用ShellExecute函数,参数Find,可以查找目录
lkz912 2001-11-20
  • 打赏
  • 举报
回复
to:dsclub(云中鹤)& asciiman()

谢谢你!用你们的方法该问题已经解决,但是我给你们加分时,网页老是出错!实在对不起了!
to:enmity(灵感之源)
你的异议有道理,但是你提供的方法,在该目录不存在是却会出错!
lkz912 2001-11-20
  • 打赏
  • 举报
回复
to:enmity(灵感之源)
谢谢你,按照你的方法我已经调试成功了。
enmity 2001-11-18
  • 打赏
  • 举报
回复
to:dsclub(云中鹤) & asciiman()

假如该目录有其它属性,如系统、隐藏等等,你这种方法是行不通的。

to:lkz912
你可以使用下面的函数看看:

Public Function DoesFolderExists(sFolder As String) As Boolean

If (GetAttr(sFolder) And vbDirectory) <> 0 Then
DoesFolderExists = True
Else
DoesFolderExists = False
End If

End Function
enmity 2001-11-17
  • 打赏
  • 举报
回复
楼上,本来用FSO不错的,可惜,为了一个功能,增加了一个DLL,这样划不来
MyLf 2001-11-17
  • 打赏
  • 举报
回复
用FileSystemObject不就很方便面吗?
Dim Fso As New Scripting.FileSystemObject
Fso.FolderExists(FolderNamePath)
asciiman 2001-11-17
  • 打赏
  • 举报
回复
'Use a function
Function FExist(ByVal sFName as String) As Boolean
Dim Res as Long
Res = Dir(sFName, vbDirectory)
If Res = "" Then
FExist = False
Else
FExist = True
End If
End Function
dsclub 2001-11-17
  • 打赏
  • 举报
回复
好办法来了:

Dim MyPath
MyPath = "d:\ff" ' 指定路径。
If Dir(MyPath, vbDirectory) = "" Then
MkDir (MyPath)
Else
MsgBox "目录存在!!"
End If

不给分不行了吧!!
dsclub 2001-11-17
  • 打赏
  • 举报
回复
头痛啊!!
问题不是已经可以解决了吗?
55555555
lkz912 2001-11-17
  • 打赏
  • 举报
回复
有没有更好的方法?
lkz912 2001-11-17
  • 打赏
  • 举报
回复
为什么我送出的分不显示呢?
dsclub 2001-11-17
  • 打赏
  • 举报
回复
一个比较下流的手段,但可以解决问题:
If Dir("d:\bak") = "" Then
on error goto ds:
MkDir "bak"
Else
ds:MsgBox "目录已存在!"
End If
enmity 2001-11-17
  • 打赏
  • 举报
回复
用GetAttr可以解决这个问题。
加载更多回复(5)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧