本篇文章把操作文件夹的代码整理了一个合集。给大家收藏备用,希望各取所需。
●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 ●FSO方法(最好用) Sub FSO方法() PathG = "C:\例子" Set FSO = CreateObject("Scripting.FileSystemObject") If FSO.FolderExists(PathG) = True Then FSO.GetFolder(PathG).Delete FSO.deleteFolder (PathG) Else End If End Sub
●Shell方法 Sub Shell方法() Shell "cmd.exe /c rd/s/q C:\例子\" End Sub
●RmDir方法(不好用) RmDir语句可以删除一个文件夹,如果想要使用 RmDir 来删除一个含有文件的目录或文件夹,则会发生错误。
如果文件夹里有文件无法直接删除文件夹,需要先遍历删除文件夹以及子文件夹里面的文件。所以这种方法,不推荐使用。 ●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
Sub CopyFile_fso() Set fso = CreateObject("Scripting.FileSystemObject") fso.copyfolder ThisWorkbook.Path & "\测试新建文件夹", ThisWorkbook.Path & "\2016年报表\" End Sub
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
Sub 本机桌面路径() MsgBox Environ("userprofile") & "\Desktop\" End Sub
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
学而时习之不亦说乎,下面的历史文章可以再翻看一下。
|