精华内容
下载资源
问答
  • 2021-12-30 00:38:22

    一、假设问题

    在VBA中,如果直接用MkDir函数创建文件夹,只能在已有文件夹里创建一层子文件夹。如:

    已存在路径:C:\A

    不存在路径:C:\A\B

    现在如果要创建路径:C:\A\B\D\F

    这种情况下,用MkDir直接是创建不了的,当然可以用其他对象创建,但是如果非得用MkDir函数创建,也不难。

    二、解决思路

    1. 把需要创建的路径

    C:\A\B\D\F

    用“\”分割成数组,用Dir()函数依次判断每层路径

    第1次判断:

    C:

    第2次判断:

    C:\A

    第3次判断:

    C:\A\B

    ……

    第n次判断:

    C:\A\B\D\F

    2. 每次判断路径如果存在,则不用创建;反之,用MkDir创建路径。即一级一级创建。

    三、示例代码

    rem 创建函数,也可以写成sub过程
    Function 创建多层文件夹(aimPath As String)
    
        '定义pathArr为后面分解目标路径的数组,subPath为每次组合的判断路径
        Dim pathArr, subPath As String
    
        '如果路径为空,退出函数(过程),后面代码不执行
        If aimPath = "" Then Exit Function
        
        'pathArr数组赋值
        pathArr = Split(aimPath, "\")
    
        '从路径数组的下标到上标,从前向后循环各级路径,逐级判断
        For i = LBound(pathArr) To UBound(pathArr)
    
            '子路径为前面多项的拼接
            For j = 0 To i
                subPath = subPath & pathArr(j) & "\"
            Next
            subPath = Left(subPath, Len(subPath) - 1)
    
            '如果用Dir()函数检测组合的路径,如果结果为空,说明路径不存在
            If Dir(subPath & "\") = Empty Then
                If i = 0 Then
    
                    '当第判断第一级路径(即盘符层次)时,如果不存在,即盘符不存在
                    MsgBox "盘符不存在!", vbInformation, "提示"
                    Exit Function
                End If
                Debug.Print subPath & " 路径不存在"
    
                '路径不存在,就用MkDir创建路径,为创建下一层路径作准备
                MkDir subPath
            End If
            
            '组合路径判断完一层(次)后,清空,否则下次路径就有多余的
            subPath = ""
        Next
        Debug.Print "完成"
    End Function
    
    rem 创建文件夹的主过程
    Sub test()
        Dim 路径 As String
        路径 = "C:\A\B\D\F"
        '创建路径“C:\A\B\D\F”
        Call 创建多层文件夹(路径)
    End Sub
    更多相关内容
  • Sub test2() Dim Fso As Object, oFile As Object, downloadpathfile$, filepath$, sFolder$, t$ downloadpathfile = [B5].Value & "\" t = [B3].Value Set Fso = CreateObject("Scripting.File...

    在这里插入图片描述

    Sub test2()
       Dim Fso As Object, oFile As Object, downloadpathfile$, filepath$, sFolder$, t$
        downloadpathfile = [B5].Value & "\"
        t = [B3].Value
        Set Fso = CreateObject("Scripting.FileSystemObject")
        For Each oFile In Fso.GetFolder(downloadpathfile).Files
            If oFile.Name Like "*" & "." & t Then
                FolderName = Split(oFile.Name, "_")
                folderpath = downloadpathfile & FolderName(0)
                Fso.CreateFolder folderpath
                oFile.Move (folderpath & "\")
            End If
       Next oFile
    End Sub
    
    展开全文
  • 已有一组Excel表格数据,使用VBA快速批量建文件夹 不知道标题怎么写。 已经有了这样一组数据 然后需要根据这两组数据新建文件夹,代码如下 Sub 建文件夹() Dim i As Integer '用于下方数组 Dim Arr1(), Arr2() ...

    已有一组Excel表格数据,使用VBA快速批量建文件夹

    不知道标题怎么写。
    已经有了这样一组数据
    在这里插入图片描述



    然后需要根据这两组数据新建文件夹,代码如下

    Sub 建文件夹()
        Dim i As Integer '用于下方数组
        Dim Arr1(), Arr2() '定义一个数组,不能定义大小和类型
        Dim Fso, Fld    '定义文件路径
        Dim rowmax  '找到数据的行数
        
        start_time = Timer  '计时开始
        
    '数据的行数
        rowmax = [A1048576].End(xlUp).Row
    '把两列数据分别赋值给两个个数组
        Arr1 = Range("A2:A" & rowmax)
        Arr2 = Range("B2:B" & rowmax)
    '选择建文件夹的路径
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set Fld = Fso.getfolder(CreateObject("Shell.Application").BrowseForFolder(0, "请选择需要创建文件夹的根目录", 0, "").Self.Path & "")
    
    '开始批量新建文件夹
        For i = 1 To UBound(Arr1)
            FolderName = Arr1(i, 1) & " " & Arr2(i, 1)
            If Dir(Fld & "\" & FolderName, vbDirectory) = vbNullString Then  '如果文件夹不存在,则新建
            VBA.MkDir (Fld & "\" & FolderName)
            End If
        Next    
    '建好了
    
        cost_time = Timer - start_time  '计时结束,计算用时
        Range("D6") = cost_time
    End Sub 
    

    完成
    在这里插入图片描述
    在这里插入图片描述

    • 202003072230 更新
      如果是需要建二级目录,在第一次for循环里再加一个for循环即可,如下图所示。
    Sub 建文件夹()
        Dim i As Integer '用于下方数组
        Dim Arr1(), Arr2() '定义一个数组,不能定义大小和类型
        Dim Fso, Fld    '定义文件路径
        Dim rowmax  '找到数据的行数
        
        start_time = Timer  '计时开始
        
    '数据的行数
        rowmax = [A1048576].End(xlUp).Row
    '把两列数据分别赋值给两个个数组
        Arr1 = Range("A2:A" & rowmax)
        Arr2 = Range("B2:B" & rowmax)
    '选择建文件夹的路径
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set Fld = Fso.getfolder(CreateObject("Shell.Application").BrowseForFolder(0, "请选择需要创建文件夹的根目录", 0, "").Self.Path & "")
    
    '开始批量新建文件夹
        For i = 1 To UBound(Arr1)
            FolderName = Arr1(i, 1) & " " & Arr2(i, 1)
            If Dir(Fld & "\" & FolderName, vbDirectory) = vbNullString Then  '如果文件夹不存在,则新建
            VBA.MkDir (Fld & "\" & FolderName)	' 新文件建好了
            ' 见上方的一行代码,此时,已经建好了一个文件夹。文件夹的全路径是:Fld & "\" & FolderName
            ' 如果需要建二级文件夹的话,在已经建好的文件夹下继续新建文件夹就行了
    '''''''''''''''''''''''''''''以下''''''''''''''''''''''''''''''''''''''''''''		
    		' 下方For循环模拟建二级文件夹
            For j = 0 To 10
                VBA.MkDir (Fld & "\" & FolderName & "\" & "测试文件" & j)
            Next
    '''''''''''''''''''''''''''''以上''''''''''''''''''''''''''''''''''''''''''''
            End If
        Next
    '建好了
        cost_time = Timer - start_time  '计时结束,计算用时
        Range("D6") = cost_time
    End Sub
    
    • 这里操作
    '''''''''''''''''''''''''''''以下''''''''''''''''''''''''''''''''''''''''''''		
    		' 下方For循环模拟建二级文件夹
            For j = 0 To 10
                VBA.MkDir (Fld & "\" & FolderName & "\" & "测试文件" & j)
            Next
    '''''''''''''''''''''''''''''以上''''''''''''''''''''''''''''''''''''''''''''
    

    最后效果如下图所示
    一级目录
    在这里插入图片描述
    二级目录
    在这里插入图片描述

    展开全文
  • vba怎么新建文件夹 我经常能够在用户的硬盘驱动器或网络驱动器上创建文件夹来存储文件。但是,问题之一是,如果父文件夹还不存在,则内置函数MkDir的标准将失败。 因此,我做了一个自定义函数,该函数将循环遍历并...

    vba怎么新建文件夹

    我经常能够在用户的硬盘驱动器或网络驱动器上创建文件夹来存储文件。但是,问题之一是,如果父文件夹还不存在,则内置函数MkDir的标准将失败。 因此,我做了一个自定义函数,该函数将循环遍历并根据需要创建目录。 如果创建成功,它将返回True。 我确信还有改进的空间,所以如果有人要添加一些内容,请继续。

    用法示例:

    If MakeDir("C:\MyAppWorkfolder\2012\January") Then
        'Proceed to export file
    End If
    这是代码:
    Public Function MakeDir(ByVal strPath As String) As Boolean
    '****************************************************************************************
    '* Function: MakeDir
    '*
    '* Author:   TheSmileyCoder
    '* Version:  1.0, Dated: 2012-03-01
    '* Input:    Full path to directory desired. For example: "C:\Program Files\MyTool\
    '*
    '* Output:   True/False indicating whether or not creation was succesfull.
    '**************************************************************************************** 
    '*  Known issues
    '   * No error handling for cases such as network drives,
    '     with restricted permissions to create folders.
    '   * No input validation  
    On Error GoTo err_Handler 
       'Check if rightmost char is a \
          If Right(strPath, 1) = "\" Then
             'Strip it
             strPath = Left(strPath, Len(strPath) - 1)
          End If 
       'Check if each individual directory exists, and if not, create it
          Dim strSplitPath() As String
          strSplitPath = Split(strPath, "\")
          Dim intI As Integer
          Dim strCombined As String 
          'Loop through, creating each directory if needed
             For intI = 0 To UBound(strSplitPath)
                If intI <> 0 Then
                   strCombined = strCombined & "\"
                End If
                strCombined = strCombined & strSplitPath(intI)
                If Dir(strCombined, vbDirectory) = "" Then
                   MkDir strCombined
                End If
             Next 
       'Code ran to end without errors, so creation was succesfull
          MakeDir = True
          Exit Function 
    '**************************************
    '*      Error Handler
    '**************************************
    err_Handler:
       MakeDir = False
       MsgBox "Error " & Err.Number & " occured." & vbNewLine & Err.Description 
    End Function

    翻译自: https://bytes.com/topic/access/insights/933852-create-folder-using-vba

    vba怎么新建文件夹

    展开全文
  • Sub test() Dim Fso As Object, oFile As Object, allpathfile$, filepath$, sFolder$, t$ allpathfile = [B1].Value & "\" t = [B3].Value Set Fso = CreateObject("Scripting.FileSystemObje...
  • 大家好,我们今日继续讲解VBA代码解决方案的第70讲内容:利用Windows Scripting Host(WSH),创建一个文件夹。在实际的代码编写工程中,经常会用到创建一个新的文件夹,如果在一般的操作中,只需要点击右键,选择新建...
  • 批量创建文件夹.zip

    2019-09-09 14:11:07
    压缩包里面有readme文件,按照步骤操作可以自定义名称,批量创建文件夹
  • VBA 实现根据学生名字及当月天数批量创建文件夹
  • 使用VBA创建文件夹

    千次阅读 2020-05-23 14:50:52
    我经常可以在用户的​​硬盘驱动器或网络驱动器上创建文件夹来存储文件。但是,问题之一是,如果父文件夹还不存在,则内置函数MkDir的标准将失败。 因此,我做了一个自定义函数,该函数将循环遍历并根据需要创建目录...
  • VBA实现当文件夹不存在时自动创建

    千次阅读 2019-09-19 16:26:26
    本文主要实现当文件夹不存在时,自动创建文件夹的功能。 假设我们要实现的功能是在D盘根目录下创建vbatest文件夹,可以看到,当前文件夹是不存在的: 我们在vb代码编辑器里输入下面的代码: Sub dir() Dim myDir ...
  • vba 创建文件夹 判断文件夹是否存在

    千次阅读 2014-05-16 13:15:52
    创建文件用MkDir 例1: Dim filepathname filepathname="C:\test" If Dir(filepathname,vbDirectory) = "" Then '如果文件不存在 MkDir filepathname End If 例2: Dim filepathname ...
  • 前景提要之前我们在上一系列也是学了一些关于VBA创建文件夹的相关操作,我们是通过dir()方法来实现的,如果是简单的文件夹的创建的话,我们完全可以通过这个方法,但是在进行VBA代码执行的过程中,如果涉及文件夹的...
  • android创建文件夹

    2021-06-05 06:57:39
    之前写过一篇博文《Android在SDcard建文件夹(在Android中移动文件必用)》.../***创建文件夹*@author廖世勇**/publicclass UploadaaaCreateFoldersprivate voi...
  • 主要介绍了VBS递归创建多级目录文件夹的方法,主要使用的是vbs fso的GetParentFolderName与CreateFolder函数,需要的朋友可以参考下
  • Android创建文件夹

    2021-06-09 15:14:01
    之前写过一篇博文《Android在SDcard建文件夹(在Android中移动文件必用)》.../***创建文件夹*@author廖世勇**/publicclass UploadaaaCreateFoldersfunctioncr...
  • 判断D盘下,名为 changeAfter_Files 的文件夹是否存在,如果不存在就新建一个名为 changeAfter_Files 的文件夹 Sub judgeFile() Dim resFolder resFolder = Dir("D:\changeAfter_Files", vbDirectory) '判断路径为...
  • VBA多级目录创建

    2012-12-27 08:36:15
    VBA多级目录创建 目录API 判断目录是否存在等多种方法
  • MkDir ("c:/例子") ‘创建文件夹 RmDir "D:\NewFolder" ’删除文件夹 End Sub -------------------------------------------------------------- 第一种方法:使用filesearch对象 Sub mysearch() Dim fs, i, ...
  • 导入本VBA并设置宏有效后,当收到新的邮件时会自动按发件人归到收件箱下相应的子文件夹里,如果不存在则创建新的文件夹。省去了手动分捡邮件的时间。 2。在microsoft outlook中增加"Open Target Folder"和"Open ...
  • 把代码中Path下的文件复制到... 'Path:原文件夹路径;afterPath:目标文件夹路径 Dim Spath As String '下边的我自己也不是很理解,但是效果达成是莫得问题的...... Set fs = CreateObject("Scripting.F...
  • VBA 遍历所有文件夹内容

    千次阅读 2020-08-28 23:14:56
    今天讲讲VBA遍历所有文件夹,之前提到过,感觉这个很是实用,以为如果要批量导入的话,能遍历操作效率杠杠的 一、VBA遍历单个文件夹 下面的所有内容之前已经学过,再把代码贴一下,主要是通过Dir实现: ...
  • VBA文件及文件夹操作

    2021-08-12 11:08:39
    VBA文件及文件夹操作1.VBA操作文件及文件夹on error resume next下测试A,在D:\下新建文件夹,命名为folder方法1:MkDir "D:\folder"方法2:Set abc =CreateObject("Scripting.FileSystemObject")abc.CreateFolder...
  • 今天来教大家如何批量生成文件夹并命名,只需要四个简单步骤即可实现,如果你在上班的时候经常涉及这方面的工作,那就一定要仔细的往下阅读,肯定对你有帮助哦!
  • vba 判断文件夹是否存在

    千次阅读 2020-04-24 10:35:18
    '如果路径path是D:\vba\1.txt,程序会认为路径下不存在该文件夹,则创建新的文件夹, '而如果1.txt这个文本文件在该目录下存在,报错,errorNumber>0,程序结束。 If Not CreateObject("Scripting....
  • 依照下面的MkDir语句语法,你可以创建一个新文件夹: MkDir Path Path明确你要创建的新文件夹名称。如果你没有写驱动器的名称的话,VB就将在当前的驱动上创建文件夹。现在,我们来看几个例子: 1. 在立即窗口里...
  • 文件与文件夹汇总 选择文件 下面代码可以弹出文件框,让用户选中文件,其中 strFile 为选中后的地址文件名,取消或关闭文件框均为退出程序。 '弹窗选择文件 With Application.FileDialog(msoFileDialogFilePicker) ...
  • VBA获取路径下所有文件名
  • 学习资源:《Excel VBA从入门到进阶》第48集 by兰色幻想忘了之前老师有没有讲过Dir函数了,还是写一下吧,再开始正文吧:Dir函数:返回一个 String,它表示与指定路径下的文件、目录或文件夹的名称。语法:Dir ...
  • 如何一步创建多级文件夹

    千次阅读 2019-05-28 14:09:02
    createDirectoryAtPath:withIntermediateDirectories:attributes: error: 路径中按多级文件夹路径拼接 withIntermediateDirectories 设置为 YES即可

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,584
精华内容 1,433
关键字:

创建文件夹vba