vba中如何存取有域权限vba获取文件夹路径

下次自动登录
现在的位置:
& 综合 & 正文
用VBA判断指定的文件夹或文件是否存在
有时我们需要用VBA判断某个文件夹或文件是否存在,以便进行后续操作。可以用下面的代码来实现这个功能:
Public Function FileFolderExists(strFullPath As String) As Boolean
On Error GoTo EarlyExit
If Not Dir(strFullPath, vbDirectory) = vbNullString Then FileFolderExists = True
EarlyExit:
On Error GoTo 0
End Function
将上述代码放入标准模块中,如果指定的文件夹或文件存在,FileFolderExists返回True。调用上述代码的方法:
1.判断文件夹是否存在:
Public Sub TestFolderExistence()
If FileFolderExists("c:/windows/") Then
MsgBox "指定的文件夹存在!"
MsgBox "指定的文件夹不存在!"
将代码中的“c:/windows/”换成指定的文件夹,“c:/windows/”也可以写成“c:/windows”,即不要后面的“/”。
2.判断文件是否存在:
Public Sub TestFileExistence()
If FileFolderExists("d:/Book1.xls") Then
MsgBox "指定的文件存在!"
MsgBox "指定的文件不存在!"
&&&&推荐文章:
【上篇】【下篇】  在网上看到有人用批处理命令提取文件夹名称。其实在excel中使用VBA代码也同样可以提取文件夹名称。
  比如需要将电脑E盘&论坛工作资料&文件夹下面的所有文件夹名称提取出来放在excel工作表的A列,可以使用下面的代码。
  使用方法是:新建一个excel文档,按ALT+F11,打开VBE编辑器,单击插入――模块,将下面的代码复制到右边的代码编辑区,然后按工具栏中的&运行&按钮即可。
Sub 提取文件夹名称()
Dim fs As Object
Set fs = CreateObject(&Scripting.FileSystemObject&)
Set f = fs.getfolder(&E:/论坛工作资料&)
For Each fd In f.subfolders
Cells(n, 1) = fd.Name
Set f = Nothing
Set fs = Nothing
  下面是VBE编辑器中写入的提取文件夹名称相关的一个截图演示:
  举一反三,如果需要提取F盘下面文件夹名称,路径更改一下就OK。查看: 1591|回复: 8
VBA如何提取F盘根目录文件夹名
阅读权限20
在线时间 小时
本帖最后由 djdeaw 于
06:28 编辑
VBA如何提取F盘根目录文件夹名?
仅仅是根目录,子目录不要
仅仅是文件夹名,文件名不要
正确如下:
F:\新建文件夹
F:\新建文件夹(2)
以下错误,就是不要提取的:
F:\文本.txt
F:\新建文件夹\move
F:\新建文件夹\move\1.rmvb
阅读权限95
在线时间 小时
Sub test()
&&Dim d As Object
&&Dim mypath$, myname$
&&Set d = CreateObject(&scripting.dictionary&)
&&mypath = &f:\&
&&myname = Dir(mypath, vbDirectory)
&&Do While myname && &&
& & If myname && &.& And myname && &..& Then
& && &If (GetAttr(mypath & myname) And vbDirectory) = vbDirectory Then
& && &&&d(mypath & myname & &\&) = &&
& && &End If
& & End If
& & myname = Dir
&&Loop
&&With Worksheets(&sheet1&)
& & .Range(&a1&).Resize(d.Count, 1) = Application.Transpose(d.keys)
&&End With
End Sub
复制代码
阅读权限95
在线时间 小时
详见附件。
23:04 上传
点击文件名下载附件
7.38 KB, 下载次数: 62
阅读权限95
在线时间 小时
chxw68 发表于
需要用字典吗?
阅读权限95
在线时间 小时
小花鹿 发表于
需要用字典吗?
这个题目可以不用字典!
阅读权限95
在线时间 小时
这个题目不用字典直接用数组就行了,2楼的代码是我在我原来的代码基础上修改的,因为偷懒就继续使用了字典。Sub test()
&&Dim d As Object
&&Dim m%
&&Dim mypath$, myname$
&&Dim arr(1 To 1000)
&&mypath = &f:\&
&&myname = Dir(mypath, vbDirectory)
&&m = 0
&&Do While myname && &&
& & If myname && &.& And myname && &..& Then
& && &If (GetAttr(mypath & myname) And vbDirectory) = vbDirectory Then
& && &&&m = m + 1
& && &&&arr(m) = mypath & myname
& && &End If
& & End If
& & myname = Dir
&&Loop
&&With Worksheets(&sheet1&)
& & .Range(&a1&).Resize(UBound(arr), 1) = Application.Transpose(arr)
&&End With
End Sub
复制代码
阅读权限70
在线时间 小时
本帖最后由 百度不到去谷歌 于
08:28 编辑
这个用文件对象最方便吧 dir还要判断是否目录 文件对象还有更多属性可以读取 程序结构也要清晰一些Private Function ShowFolderList(folderspec)
'获取folderspec下的子文件夹列表 返回数组
& & Dim i, fs, f, f1, s, sf, arr
& & Dim hs, h, h1, hf
& & ReDim arr(1 To 60000)
& & Set fs = CreateObject(&Scripting.FileSystemObject&)
& & Set f = fs.GetFolder(folderspec)
& & Set sf = f.SubFolders
& & For Each f1 In sf
& && &&&i = i + 1
& && &&&arr(i) = f1.Name
& && &&&
& && &&&'Call ShowFolderList(folderspec & &\& & f1.Name)'递归子文件夹
& & Next
& & ReDim Preserve arr(1 To i)
& & ShowFolderList = arr
End Function
Private Sub Test()
&&Dim arr
& && & arr = ShowFolderList(&E:\&)
& & Debug.Print Join(arr, vbCr) '调试打印
& &[A1].Resize(UBound(arr)) = Application.Transpose(arr) '输出到A列
End Sub
是这样的!使用文件对象比较方便。&
阅读权限20
在线时间 小时
chxw68 发表于
HYPERLINK公式和VBA选定单元格的效果为什么不一样?
帮我看一下这个,谢谢!!!
阅读权限20
在线时间 小时
百度不到去谷歌 发表于
这个用文件对象最方便吧 dir还要判断是否目录 文件对象还有更多属性可以读取 程序结构也要清晰一些
HYPERLINK公式和VBA选定单元格的效果为什么不一样?
帮我看一下这个,谢谢!!!
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师

我要回帖

更多关于 无法存取nas主文件夹 的文章

 

随机推荐