本篇文章把操作文件夹的代码整理了一个合集。给大家收藏备用,希望各取所需。
01新建文件夹
●MKDir方法
Sub MKDir方法()
myfile = "d:/例子"
f = Dir(myfile, vbDirectory)
If f = "" Then MkDir myfile
End Sub
Dir函数返回一个 String,用以表示一个文件名、目录名或文件夹名称。
第二参数用来指定文件属性,常用的几种属性如下:
vbNormal 0 标准文件
vbReadOnly 1 只读文件
vbHidden 2 隐藏文件
vbDirectory 16 文件夹
这里我们要判断某个文件夹是否存在,用的是vbDirectory属性。
●FSO对象方法
Sub FSO方法()
Set oFso = CreateObject("Scripting.FileSystemObject")
oFso.CreateFolder ("C:/例子")
End Sub
●Shell方法
Sub Shell方法()
Shell "cmd.exe /c md C:\例子"
End Sub
02删除文件夹
●FSO方法(最好用)
Sub FSO方法()
PathG = "C:\例子"
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FolderExists(PathG) = True Then '//如果存在这个文件夹,则删除文件夹
'以下两个语句均可
FSO.GetFolder(PathG).Delete '//方法1
FSO.deleteFolder (PathG) '//方法2
Else
End If
End Sub
●Shell方法
Sub Shell方法()
Shell "cmd.exe /c rd/s/q C:\例子\"
End Sub
●RmDir方法(不好用)
RmDir语句可以删除一个文件夹,如果想要使用 RmDir 来删除一个含有文件的目录或文件夹,则会发生错误。
如果文件夹里有文件无法直接删除文件夹,需要先遍历删除文件夹以及子文件夹里面的文件。所以这种方法,不推荐使用。
RmDir "C:\例子"
0
3移动文件夹
●FSO方法
Set fso=CreateObject("scripting.filesystemobject")
fso.MoveFolder "文件夹路径","目标路径"
这种方法容易出现没有权限的错误,所以参考网上大神的曲线救国的方法:先复制,再删除=剪切。这样的确不会报错。
Set fso=CreateObject("scripting.filesystemobject")
fso.CopyFolder "文件夹路径","目标路径"
fso.DeleteFolder "文件夹路径"
亲测通过的示例代码:
Sub 移动文件夹2()
Set fso = CreateObject("Scripting.FileSystemObject")
myFolder = "d:\txt" '要移动的文件夹
myNewFilePath = "e:\例子" '要移动的位置
If fso.FolderExists(myFolder) Then
fso.copyfolder myFolder, myNewFilePath
MsgBox "已经将文件夹 " & myFolder & " 移到了文件夹 " & myNewFilePath
Else
MsgBox "要移动的文件夹不存在"
End If
fso.deletefolder myFolder
End Sub
●Name方法(同样会有权限错误)
Sub Name方法()
Name "D:\例子" As "E:\例子"
End Sub
0
4复制文件夹
●FSO方法
Sub CopyFile_fso()
Set fso = CreateObject("Scripting.FileSystemObject")
fso.copyfolder ThisWorkbook.Path & "\测试新建文件夹", ThisWorkbook.Path & "\2016年报表\"
End Sub
0
5获取子文件夹
Sub 获取子文件夹路径fso方法()
Set fso = CreateObject("scripting.filesystemobject")
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show Then PathSht = .SelectedItems(1) Else Exit Sub
End With
Set f_num = fso.GetFolder(PathSht)
For Each fl In f_num.SubFolders
MsgBox fl.Path
Next
End Sub
0
6获取桌面路径
Sub 本机桌面路径()
MsgBox Environ("userprofile") & "\Desktop\"
End Sub
0
7获取文件夹属性
Sub 文件夹属性()
Set fso = CreateObject("scripting.filesystemobject")
Set f = fso.GetFolder("C:\例子")
strr = "文件类型为:" & f.Attributes
strr = strr & "文件夹名称为:" & f.Name & vbCrLf
strr = strr & "文件夹短名称为:" & f.ShortName & vbCrLf
strr = strr & "文件夹类型为:" & f.Type & vbCrLf
strr = strr & "文件夹所在驱动器名为:" & f.Drive & vbCrLf
strr = strr & "文件夹是否为短名称:" & f.IsRootFolder & vbCrLf
strr = strr & "上层文件夹为:" & f.ParentFolder & vbCrLf
strr = strr & "文件夹路径为:" & f.Path & vbCrLf
strr = strr & "文件夹短名称路径为:" & f.ShortPath & vbCrLf
strr = strr & "文件夹大小为:" & Int(f.Size / 1024 ^ 2) & "M" & vbCrLf
strr = strr & "文件夹创建时间为:" & f.DateCreated & vbCrLf
strr = strr & "文件夹最后一次修改时间为:" & f.DateLastModified & vbCrLf
strr = strr & "文件夹最后一次访问时间为:" & f.DateLastAccessed & vbCrLf
MsgBox strr
End Sub