精华内容
下载资源
问答
  • 本篇文章把操作文件夹的代码整理了一个合集。给大家收藏备用,希望各取所需。01新建文件夹●MKDir方法SubMKDir方法()myfile="d:/例子"f=Dir(myfile,vbDirectory)Iff=""ThenMkDirmyfileEndSubDir函数返回一个 String...

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

    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 "文件夹路径","目标路径"

    这种方法容易出现没有权限的错误,所以参考网上大神的曲线救国的方法:先复制,再删除=剪切。这样的确不会报错。

    1f57c2b580a52b319b332d38c744a0f5.png

    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

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

    4d1d08a0428e8dc9ba05a1d82869c191.png

    31e50df52d8034b301aac5d104ced21b.pngc726f3c42c1f2fd164c7873988fff4d0.png

    展开全文
  • Excel 打开对话框,获取文件夹路径 'Window「参照」ダイアログで選択したItem 名を取得 Public Function GetFolderName(ByVal DialogType As MsoFileDialogType) As String With Application.FileDialog(DialogType...

    Excel 打开对话框,获取文件夹路径

     

    'Window「参照」ダイアログで選択したItem 名を取得
    Public Function GetFolderName(ByVal DialogType As MsoFileDialogType) As String
        With Application.FileDialog(DialogType)
            If .Show = True Then
                GetFolderName = .SelectedItems(1)
            End If
        End With
    End Function
    
    
    Public Sub setInputAndOutput()
    
        Dim inFolder As String: inFolder = GetFolderName(msoFileDialogFolderPicker)
        Dim outFolder As String
        
        ActiveSheet.Range("D4") = inFolder
        
        Dim indexOfIN As Integer
        
        indexOfIN = InStr(inFolder, "\In")
        
        
        If indexOfIN > 0 Then
            outFolder = Mid(inFolder, 1, indexOfIN) & "Out"
            ActiveSheet.Range("D12") = outFolder
            
            Range("I2:N15").Select
            Selection.ClearContents
            Range("A1").Select
        Else
            TOOL_FILE_NAME = ThisWorkbook.Name
            TOOL_FILE_SHEET_NAME = "ツール"
            Set ERROR_INFO_LIST = New Collection
            ERROR_INFO_LIST.Add ("input:inputの選択不正確、" & "inputに対して、In フォルダーを選択ください。")
            Call setErrorInfoToExcel
            Set ERROR_INFO_LIST = New Collection
            Range("A1").Select
        End If
    
    End Sub
    
    
    

     

     

     

    以上

     

    具体用法

    Application.FileDialog(fileDialogType)
    fileDialogType      MsoFileDialogType 类型,必需。文件对话框的类型。

    MsoFileDialogType 可为以下 MsoFileDialogType 常量之一。

        ・允许用户选择文件。              msoFileDialogFilePicker    
        ・允许用户选择一个文件夹。          msoFileDialogFolderPicker
        ・允许用户打开文件。             msoFileDialogOpen      
        ・允许用户保存一个文件。          msoFileDialogSaveAs     

     

     

     

     

    展开全文
  • 上回书说到,如何用EXCEL建立自己的工作台(导航与日志),有朋友说,自己的文件太多了,做起导航很费劲。别急,其实我们可以快速提取文件名,以便于我们批量建立...提取当前文件夹下的文件、文件夹名称(不含子文件...

    e28216de-7c14-eb11-8da9-e4434bdf6706.png

    e48216de-7c14-eb11-8da9-e4434bdf6706.png

    上回书说到,如何用EXCEL建立自己的工作台(导航与日志),有朋友说,自己的文件太多了,做起导航很费劲。别急,其实我们可以快速提取文件名,以便于我们批量建立超链接。

    延伸阅读:

    点墨楼:高效秘技!用EXCEL制作导航页和日志表管理日常工作zhuanlan.zhihu.com
    e88216de-7c14-eb11-8da9-e4434bdf6706.png

    1. 无门槛通用bat法——用批处理脚本提取文件名

    >>>>提取当前文件夹下的文件、文件夹名称(不含子文件夹)

    新建一个文本文档,命名为“提取文件名”。

    打开文本文档,输入公式:dir *.*/b>文件清单.txt

    eb8216de-7c14-eb11-8da9-e4434bdf6706.png
    dir为列表命令,/b为只保留文件名和扩展名参数,>为将命令结果导入到指定文件内

    将文本文档的文件类型改为bat,即将“提取文件名.txt”更改为“提取文件名.bat”。如果你的电脑没有显示文件扩展名,另存为.bat文件即可。

    注:bat文件就是批处理文件,DOS年代的命令,不挑系统。

    双击bat文件运行,即可得到文件清单:

    ef8216de-7c14-eb11-8da9-e4434bdf6706.png

    >>>>提取当前文件夹下的文件、文件夹名称(包括子文件夹),输出文件树

    上述方法有时候并不能满足我们,比如,有的同事就喜欢将文件分门别类都放到文件夹下。然后,我去查一个文件,就需要一个个文件夹去找,点了十几下,最后发现还是个空文件夹,真是让人心累。

    有没有办法能够将文件夹下所有文件的名称都提取出来?
    有!而且可以提取成文件树!

    步骤同上,公式替换成:tree /F > 文件树1.txt

    f08216de-7c14-eb11-8da9-e4434bdf6706.png

    运行结果如下:

    f18216de-7c14-eb11-8da9-e4434bdf6706.png

    瞧,我就在某人的电脑下发现了秘密文件(上图倒数第三行),抓他个现行。

    点开一看

    .

    .

    .

    .

    .

    .

    .

    f28216de-7c14-eb11-8da9-e4434bdf6706.png
    这什么标题党?

    >>>>仅提取当前文件夹名称(包含子文件夹)

    步骤同上,公式替换成:tree > 文件树2.txt

    f48216de-7c14-eb11-8da9-e4434bdf6706.png

    运行结果如下(不提取文件的名称):

    f78216de-7c14-eb11-8da9-e4434bdf6706.png

    方法小结:

    f98216de-7c14-eb11-8da9-e4434bdf6706.png

    上述三种方法输出文件都可以改变类型,扩展名“.txt”替换成对应的文件扩展名就可以了,比如替换成“.xls”就生成EXCEL文件。

    2. WIN10党福利——复制路径

    新系统带来新功能,WIN10系统可以直接选中文件,复制路径。

    ff8216de-7c14-eb11-8da9-e4434bdf6706.png

    粘贴到EXCEL表格中:

    028316de-7c14-eb11-8da9-e4434bdf6706.png

    EXCEL 2016及以上版本可以用快速填充命令,得到文件名。

    048316de-7c14-eb11-8da9-e4434bdf6706.png

    EXCEL版本低也没关系,可以用替换,将“文件名之前的路径”替换为“空”。

    058316de-7c14-eb11-8da9-e4434bdf6706.png

    3. 高阶VBA大法——用EXCEL提取文件名

    上面两种方法简单快捷,但有一个缺点,每次文件有变化,还需要重新运行一次批处理命令,再粘贴到EXCEL中。

    能不能将更简单一点?
    可以,用EXCEL的VBA功能即可。

    VBA是微软的一种宏语言,EXCEL学会使用VBA就相当于打开了一片新天地。

    具体方法:

    1)插入一个长方形,输入名称,然后制定宏。(此步骤是为了方便运行,非必须)

    098316de-7c14-eb11-8da9-e4434bdf6706.png

    2)新建宏。

    0b8316de-7c14-eb11-8da9-e4434bdf6706.png

    3)将下面的代码复制代码框中:

    Sub 提取文件名()
    On Error GoTo 100
    Dim wsh As Object, mypath As String, ar, i&, br
    mypath = CreateObject("shell.application").BrowseForFolder(0, "请选择要搜索的文件夹", 0).Items.Item.Path '在此指定目录
    Set wsh = CreateObject("wscript.shell")
    mypath = wsh.exec("cmd /c tree /f " & Chr(34) & mypath & Chr(34)).StdOut.ReadAll
    mypath = Left(mypath, Len(mypath) - 1)
    ar = Split(mypath, vbCrLf)
    ReDim br(1 To UBound(ar) + 1, 1 To 1)
    For i = 0 To UBound(ar)
    br(i + 1, 1) = ar(i)
    Next
    Range("a1").Resize(UBound(br)) = br
    Set wsh = Nothing
    100:
    End Sub

    以上代码来自EXhome论坛@yangyangzhifeng(学习VBA编程还是颇耗时间的,网上很多代码可以借鉴)

    0f8316de-7c14-eb11-8da9-e4434bdf6706.png

    4)点击长方形按钮运行,选择制定提取文件树的文件夹。

    118316de-7c14-eb11-8da9-e4434bdf6706.png

    得到文件树:

    148316de-7c14-eb11-8da9-e4434bdf6706.png

    也有代码可以实现只提取文件名(类似dir批处理命令的效果),下期告诉你。

    总结

    158316de-7c14-eb11-8da9-e4434bdf6706.png

    文件名提取成功了,那如何快速建立超链接呢?且听下回分解!

    展开全文
  • Sub SelectFolder ( ) Dim Path ..."您选择的文件夹是:" ... '获取到的Path长这个样子: "D:\VBA\Report\Format" ,Format就是我选中的文件夹的名字 End If End With End Sub
    Sub SelectFolder()
        Dim Path As String
        With Application.FileDialog(msoFileDialogFolderPicker)
            If .Show = -1 Then
            'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果按 OK)和 0(如果按 Cancel)
                Path = .SelectedItems(1)
                MsgBox "您选择的文件夹是:" & Path, vbOKOnly + vbInformation, "智能Excel"	
                '获取到的Path长这个样子:"D:\VBA\Report\Format",Format就是我选中的文件夹的名字
            End If
        End With
    End Sub
    
    展开全文
  • Sub getfoldername() '获取指定路径下的文件夹名称 Dim fs As Object n = 1 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.getfolder("C:\Lx\all") For Each fd In f.subfolders Cells(n, ...
  • VBA获取文件夹中的文件列表

    千次阅读 2010-03-13 22:03:00
    如果我们要在Excel中获取某个文件夹中所有的文件列表,可以通过下面的VBA代码来进行。代码运行后,首先弹出一个浏览文件夹对话框,然后新建一个工作簿,并在工作表的A至F列分别列出选定文件夹中的所有文件的文件名、...
  • Excel VBA文件夹-1.12更改文件名前景提要在我的计划中,本篇是VBA文件夹这一系列的最后一篇分享了,按照我自己学习的过程中,到这里基本上应该能够应付日常工作中关于文件夹方面的操作需求了,今天分享的内容是...
  • 获取文件路径: Public Sub 文件路径()  Dim strFolder As String  '差异:msoFileDialogFilePicker  With Application.FileDialog(msoFileDialogFilePicker)  '文件对话框的题目,根据个人情况进行设定  ....
  • vba 遍历文件夹(利用Dir函数)

    千次阅读 2020-05-18 15:51:57
    Dim path As String '外部文件夹路径 path = "F:\vba" '当不确定路径的最后一位是不是"\"时,可以用如下代码判断: If Right(path , 1) <> "\" Then path = path & "\" End If '遍历文件夹,获取以"....
  • Private Declare Function ShellExecute Lib 'shell32.dll' Alias 'ShellExecuteA' (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory ...
  • Sub 获取文件列表() Dim m As Long, myFile MsgBox ("使用前请先查看路径是否需要变更,另外文件列表会写入当前活动工作表的第一列,确认请按Enter按键,取消请按Ctrl + PauseBaeak") mypath = "F:\每月例行-利润...
  • 一、提取单层文件内的文件名 ... '获取用户选择文件夹路径 With Application.FileDialog(msoFileDialogFolderPicker) '选择文件夹 If .Show Then p = .SelectedItems(1) '选择的文件路径赋值变量P Else
  • VBA自动获取二级文件夹目录

    千次阅读 2018-10-10 09:52:53
    Sub FindFileName() ThisWorkbook.Worksheets(1).UsedRange.Delete '打开文件... Dim DirectPath As String '定义父文件夹路径 Dim ChildDirectPath As String '定义子文件夹路径 DirectPath = ThisWorkbook.Pat...
  • 2、字符串处理,将字符串按\切片成数组,相当于从右向左删除文件名,获得文件所在文件夹路径,且最后保留"\"(至于这里为什么不直接选择文件夹而是选择文件,当时脑抽了/./) 3、忽略程序报错,核实是否存在某一个...
  • 代码1:(Function) Public ..."C:\" End With '显示对话框 FolderDialogObject.Show '获取选择对话框选择的文件夹 paths = FolderDialogObject.SelectedItems(1) MsgBox (paths) '弹出我们选择的文件夹 End Sub
  • 学习资源:《Excel VBA从入门到进阶》第48集 by兰色幻想忘了之前老师有没有讲过Dir函数了,还是写一下吧,再开始正文吧:Dir函数:返回一个 String,它表示与指定路径下的文件、目录或文件夹的名称。语法:Dir ...
  • 小伙伴们,之前有跟大家分享过Power Query获取文件夹内文件清单及其属性的方法【Excel快速获取文件列表及文件属性】。今天教大家通过VBA代码来实现同样的功能,提取文件夹内的文件信息更加灵活,只要选择对应的...
  • 本文介绍如何在VBA中递归列出文件,在列表框中显示文件路径和文件名前面的我们讲过类似的实例《Access获取文件夹内的文件名及路径》,下面函数的功能更加完整Public Function ListFiles(strPath As String, Optional...
  • '获取用户选择文件夹路径 With Application.FileDialog(msoFileDialogFolderPicker) '选择文件夹 If .Show Then p = .SelectedItems(1) '选择的文件路径赋值变量P Else Exit Sub '如果没有选择保存路径,则退出...
  • '获取用户选择文件夹路径 With Application.FileDialog(msoFileDialogFolderPicker) '选择文件夹 If .Show Then p = .SelectedItems(1) '选择的文件路径赋值变量P Else Exit Sub '如果没有选择保存路径,则退出...
  • 学习资源:《Excel VBA从入门到进阶》第49集 by兰色幻想上节学了怎么遍历一个文件夹的文件,那么假设文件夹里还有文件夹,要怎么获取文件夹下所有文件和子文件夹下的所有文件路径呢?根据之前所学的,一旦定义了...
  • 这里介绍两种方法一种FileSystemObject方法一种dir方法 ,分别使用for each循环和do while循环,希望大家2个都自己调试一下代码截图如下 不明白的同学可以...SubFolder_Names() '提取文件夹名称 Dim RtFolder, nlF...
  • 01、获取打开文件的工作路径和工作名 '====================================================================== '功能: 获取打开文件的工作路径和工作名 '函数名: selectExcelfile '参数1: ThisDirPath 需查找...
  • '===============================...'功能: 查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径) '函数名: getAllSubDirs '参数1: ThisDirPath 需查找的文件夹名,最后可以有或没有"\" '参数2: Files ...
  • 还要包括子文件夹,我新手,不能太难……VBA好像可以!不会!!!好吧!那只能让我带你学一招小技巧了!让我们直接开干吧~演示版本:EXCEL20162013和2010版本的同学,可以百度下载Power Query安装插件1、准备好路径...
  • 还要包括子文件夹,我新手,不能太难……VBA好像可以!不会!!!好吧!那只能让我带你学一招小技巧了!让我们直接开干吧~演示版本:EXCEL20162013和2010版本的同学,可以百度下载Power Query安装插件1、准备好路径...
  • 还要包括子文件夹,我新手,不能太难……VBA好像可以!不会!!!好吧!那只能让我带你学一招小技巧了!让我们直接开干吧~演示版本:EXCEL20162013和2010版本的同学,可以百度下载Power Query安装插件1、准备好路径...
  • 应用场景1、下载或收发的工作表中存在图片,需要导出备份2、数据分析的数据图表,需要批量的导出图片附:视频知识要点1、Dir(path, vbDirectory)检查某些文件或目录是否存在,返回目录或文件夹名称2、Kill (path &...

空空如也

空空如也

1 2 3 4
收藏数 64
精华内容 25
关键字:

vba获取文件夹路径