ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 229|回复: 3

vba创建多级目录和删除多级目录的自定义函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-28 17:25 | 显示全部楼层 |阅读模式
本帖最后由 mythqiu 于 2024-5-28 17:29 编辑

创建多级目录:(解决mkdir只能创建一个目录问题

  1. Function MKDirs(Str As String) As Boolean
  2. Rem mkdir的升级版本,根据目录地址创建文件夹
  3. Rem 使用方法Call MKDirs("D:\test\test2\test3")
  4. Rem if MKDirs("D:\test\test2\test3")=True then doSomething  else doOtherSomething
  5.     On Error Resume Next
  6.     Dim arr, i%, newStr$
  7.     If Len(Str) = 0 Then Exit Function
  8.     If InStr(1, Str, "\") > 0 Then
  9.         arr = Split(Str, "\")
  10.         For i = 0 To UBound(arr)
  11.             If Len(arr(i)) > 0 Then
  12.                 newStr = newStr & arr(i) & "\"
  13.                 If Dir(newStr, vbDirectory) = "" Then
  14.                     MkDir newStr
  15.                     If Err.number <> 0 Then GoTo ele
  16.                 End If
  17.             End If
  18.         Next i
  19.     Else
  20.         If Dir(Str, vbDirectory) = "" Then
  21.             MkDir Str
  22.             If Err.number <> 0 Then GoTo ele
  23.         End If
  24.     End If
  25.     MKDirs = True   '创建多级目录成功
  26.     Exit Function
  27. ele:
  28.     MKDirs = False  '创建多级目录失败
  29.     'MsgBox Err.number & Err.Description
  30. End Function
复制代码

删除多级目录:如 call rmdirs("D:\test") 将删除此test目录下所有目录和文件


  1. Function RMDirs(Str As String) As Boolean
  2. Rem RMdir的升级版本,根据目录地址删除最后文件夹及里面的文件
  3. Rem 使用方法Call RMDirs("D:\test\test2\test3")
  4. Rem if RMDirs("D:\test\test2\test3")=True then doSomething  else doOtherSomething
  5.     Err.Clear
  6.     On Error GoTo ele
  7.     Dim fs, f
  8.     If Len(Str) = 0 Then Exit Function
  9.     Set fs = CreateObject("Scripting.FileSystemObject")
  10.     Set f = fs.GetFolder(Str)
  11.     f.Delete
  12.     RMDirs = True   '删除多级目录成功
  13.     Set fs = Nothing
  14.     Set f = Nothing
  15.     Exit Function
  16. ele:
  17.     RMDirs = False  '删除多级目录失败
  18.     Set fs = Nothing
  19.     Set f = Nothing
  20.     'MsgBox Err.number & Err.Description
  21. End Function
复制代码




TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-29 10:33 | 显示全部楼层
自己收藏方便查找之用

TA的精华主题

TA的得分主题

发表于 2024-5-29 11:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 逍遥爱迪生 于 2024-5-29 11:56 编辑


Function CreateFolder(ByVal szCheckFolder As String) As Boolean
   
    Dim szFolderBuff()        As String
    Dim nFolderLayer        As Long
    Dim szFolderNow         As String
    Dim i                   As Long

    Dim szFolder            As String
      
    szFolderNow = ""
    Dim Lefts As String, ID As Long
    If Dir(szCheckFolder, vbDirectory) <> "" Then
        CreateFolder = True
        Exit Function
    End If
    ID = InStr(3, szCheckFolder, "\")
    If ID > 0 Then
        Lefts = Left(szCheckFolder, ID - 1)
        szCheckFolder = Mid(szCheckFolder, ID)
    End If
    'lefts=
    szFolderBuff = Split(szCheckFolder, "\")
    nFolderLayer = UBound(szFolderBuff)
    On Error Resume Next
    If nFolderLayer < 1 Then
        CreateFolder = False
    Else
        szFolderNow = szFolderBuff(0)
        szFolderNow = Lefts & szFolderNow
        For i = 1 To UBound(szFolderBuff)
            Err.Clear
            szFolderNow = szFolderNow & "\" & szFolderBuff(i)
            szFolder = Dir(szFolderNow & "\", vbDirectory)
            If 0 = Len(szFolder) Then
                MkDir szFolderNow
                'CreateDirectory(szFolderNow
               
            End If
        Next i
    End If
CreateFolder = Err.Number = 0
End Function

TA的精华主题

TA的得分主题

发表于 2024-5-29 11:55 | 显示全部楼层
Private Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, Optional ByVal psa As Long) As Long

Function MakeDir2(Forlder1 As String) As Boolean
    ' 如果hwnd 設定為 Null,則不會顯示任何使用者介面
    MakeDir2 = SHCreateDirectoryEx(0, Forlder1) = 0
End Function
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-23 02:45 , Processed in 0.039866 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表