分享

【代码合集】VBA操作文件夹代码合集

 VBA说 2020-04-07

本篇文章把操作文件夹的代码整理了一个合集。给大家收藏备用,希望各取所需。

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:\例子"
03
移动文件夹

●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
04
复制文件夹

●FSO方法

Sub CopyFile_fso()
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.copyfolder ThisWorkbook.Path & "\测试新建文件夹", ThisWorkbook.Path & "\2016年报表\"
End Sub
05
获取子文件夹
Sub 获取子文件夹路径fso方法()
    Set fso = CreateObject("scripting.filesystemobject")
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then PathSht = .SelectedItems(1Else Exit Sub
    End With
    Set f_num = fso.GetFolder(PathSht)
    For Each fl In f_num.SubFolders
        MsgBox fl.Path
    Next
End Sub
06
获取桌面路径
Sub 本机桌面路径()
  MsgBox Environ("userprofile") & "\Desktop\"
End Sub
07
获取文件夹属性
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

学而时习之不亦说乎,下面的历史文章可以再翻看一下。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多