精华内容
下载资源
问答
  • (1)首先,楼主先新建一个excel,名称楼主自己写,怎样都行,然后将其打开。 (2)打开后按住Alt再按F11,这样就会打开vba代码编辑器 (3)点菜单栏上的“插入”,选择“模块”,这样在左下角就会出现一个“模块1...

    (1)首先,楼主先新建一个excel,名称楼主自己写,怎样都行,然后将其打开。

    (2)打开后按住Alt再按F11,这样就会打开vba代码编辑器

    (3)点菜单栏上的“插入”,选择“模块”,这样在左下角就会出现一个“模块1”

    (4)双击“模块1”,右边就会出现“模块1”的编辑界面,将以下代码复制,并粘贴到这个界面中,按F5运行。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    Sub 遍历文件夹()

    'Columns(1).Delete  

    On Error Resume Next

    Dim As String

    Dim file() As String

    Dim i, k, x

    x = 1

    i = 1: k = 1

    ReDim file(1 To i)

    file(1) = InputBox("请输入要查找的文件夹:") & "\"

    Do Until i > k

        f = Dir(file(i), vbDirectory)

            Do Until f = ""

                If InStr(f, ".") = 0 Then

                    k = k + 1

                    ReDim Preserve file(1 To k)

                    file(k) = file(i) & f & "\"

                End If

                f = Dir

            Loop

        i = i + 1

    Loop

    For i = 1 To k

        f = Dir(file(i) & "*.*")

        Do Until f = ""

           'Range("a" & x) = f

           Range("a" & x).Hyperlinks.Add Anchor:=Range("a" & x), Address:= _

            file(i) & f, TextToDisplay:=f

            x = x + 1

            f = Dir

        Loop

    Next

    End Sub

    (5)在出现的对话框中,将你要查找的文件的地址复制到对话框中,按确定,就完成了。

     

    注:这里用的是excel2007版,如果楼主用的是其他版本,有可能存在代码不兼容问题。

     

    图1.打开vba编辑器。

     

    图2.运行代码。

     

    图3.结果。

    展开全文
  • 示例代码:filename = Dir("F:userdataDesktop新建文件夹")dir后面的参数应该以反斜杠“”结尾,这样才能返回该文件夹下的文件名称。否则“新建文件夹”会被当成一个文件名进行处理。Dir运行一次只能得到一个文件名...

    33c22cf94831850c522f1734ab57fcf4.png

    VBA编程知识点(10)——Dir函数

    学习自杨洋老师《全民一起VBA》

    1. 在VBA中,dir函数可以返回一个文件夹下一个文件的名字(包含后缀)。

    示例代码:

    filename = Dir("F:userdataDesktop新建文件夹")

    dir后面的参数应该以反斜杠“”结尾,这样才能返回该文件夹下的文件名称。否则“新建文件夹”会被当成一个文件名进行处理。

    Dir运行一次只能得到一个文件名。为得到下一个文件名,代码应该这样写:filename = Dir。

    Dir后面不写任何参数,如果写了与前面相同的参数"F:userdataDesktop新建文件夹",则会重新扫描该文件夹,又得到第一个文件名,如果更改为其他文件夹,就扫描该文件夹,得到它的第一个文件名

    如果文件夹中有n个文件,或者说有n个符合条件的文件,那么当Dir运行第n+1次时,则返回一个空字符串,代表已经查找完所有的文件。Dir运行第n+2次时,程序将报错。

    2. 扫描一个文件夹下所有文件的通用模板

    Dim filename as string
    filename = Dir("F:userdataDesktop新建文件夹")  '可以更改为任意文件夹
    Do while filename <> ""
    	相关操作
    	filename = Dir  '获取下一个文件名
    Loop

    3. Dir扫描符合条件的文件名(通配符*)

    示例代码:

    F = Dir("F:userdataDesktop新建文件夹*.xls"),扫描所有后缀为.xls的文件。

    4. 判断一个文件是否存在

    示例代码:

    F = Dir("F:userdataDesktop新建文件夹123.xls")

    如果文件123.xls存在,则返回字符串123.xls,如果不存在,则返回空字符串。

    5. 扫描文件和子文件夹名称

    一般情况下,Dir函数只返回文件名,而不返回子文件夹名。如果想要两者都返回,则需要加上vbDirectory参数。示例代码如下:

    F = Dir("F:userdataDesktop新建文件夹" , vbDirectory)

    特别要注意的是,子文件夹包括“.”和“..”两个特殊名字,分别代表本目录F:userdataDesktop新建文件夹及其父目录F:userdataDesktop。

    Dir函数只能返回第一层的子文件夹和文件名,子文件夹下的文件与文件夹不返回。

    展开全文
  • 上回书说到,如何用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为只保留文件名和扩展名参数,&gt;为将命令结果导入到指定文件内

    将文本文档的文件类型改为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

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

    展开全文
  • 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

    展开全文
  • 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, ...
  • 如何获取指定文件夹下文件的名称?很久以前(2年前?)我们分享过DOS的方法,操作动画如下:VBA可以通过Wscript.Shell调用DOS语句,以后我们可能会分享到这部分内容~所以这里先简单说下动画中DOS语句的意思DIR *.*/B&...
  • 获取文件夹下文件名,使用VBA处理难度并不大,但是获取全部(包括子文件夹)就难倒了很多新手!今天我们就使用Python和VBA一起来看看如何获取全部文件名!VBA 获取全部文件名(含子文件夹)子文件夹可能还有子文件夹,...
  • 学习资源:《Excel VBA从入门到进阶》第48集 by兰色幻想忘了之前老师有没有讲过Dir函数了,还是写一下吧,再开始正文吧:Dir函数:返回一个 String,它表示与指定路径下的文件、目录或文件夹名称。语法:Dir ...
  • 依照下面的MkDir语句语法,你可以创建一个新文件夹: MkDir Path Path明确你要创建的新文件夹名称。...3. 获取当前文件夹名称: ?CurDir 结果如下: 使用RmDir函数来删除不需要的文件夹。该函数的语法如下:
  • Hello,大家好,之前跟大家分享了使用excel...这个的操作也不难,下面就让我们来看下他是如何设置的一、什么是宏表函数以及FILES函数宏表函数是早期低版本excel的产物,它是vba的前身,现在已经被vba完全取代了,但...
  • 今天简单几步教你快速汇总文件名称并创建目录管理:一、vba文件夹获取工作簿名称Sub lianjie()'从文件夹中提取工作簿名称Dim str As StringDim path As String path = "C:甥敳獲AdministratorDesktop链接"Dim i ...
  • 在日常工作中,修改文件名称是平常的事情,如果只是...第一个大步骤:需要批量获取原文件名称所有的图片都放在一个叫“图片”的文件夹里面,如下图所示批量获取文件名的方法有很多,本文是用VBA来完成1、新建一张...
  • 这里介绍两种方法一种FileSystemObject方法一种dir方法 ,分别使用for each循环和do while循环,希望大家2个都自己调试一下代码截图如下 不明白的同学可以...SubFolder_Names() '提取文件夹名称 Dim RtFolder, nlF...
  • VBA

    2019-09-17 17:24:05
    张老师的106课,过了一遍,直接上论坛打算一边解决问题一边锻炼代码;尝试了一周,感觉有些吃力; 需要重新过一遍张老师的...获取文件夹名or文件名称 获取文件名中某个字段 3.遍历文件内容,并统计 4.工作表命名 ...
  • 这里介绍两种方法一种FileSystemObject方法一种dir方法 ,分别使用for each循环和do while循环,希望大家2个都自己调试一下代码截图如下 不明白的同学可以...SubFolder_Names() '提取文件夹名称 Dim RtFolder, nlF...
  • VBA中DIR用法举例VBA中DIR函数用法讲解1、dir代码演示先上一段代码,作用是获取某个文件夹下子文件夹和文件的名称没加注释的代码Sub 获取文件夹和文件名()Dim str1 As String, str2 As String, i As IntegerSet a = ...
  • 使用文件夹名称来对应挑战: VBAStocks 。 在刚创建的文件夹内,添加任何VBA文件。 这些将是每个分析运行的主要脚本。 将以上更改推送到GitHub或GitLab。 档案 -在开发脚本时使用它。 -在此数据上运行脚本以生成...
  • 应用场景1、下载或收发的工作表中存在图片,需要导出备份2、数据分析的数据图表,需要批量的导出图片附:视频知识要点1、Dir(path, vbDirectory)检查某些文件或目录是否存在,返回目录或文件夹名称2、Kill (path &...
  • 使用文件夹名称来对应挑战: VBAStocks 。 在刚创建的文件夹内,添加任何VBA文件。 这些将是每个分析运行的主要脚本。 将以上更改推送到GitHub或GitLab。 档案 -在开发脚本时使用它。 -在此数据上运行脚本以生成...
  • 让朋友也能收到免费文章在公众号发送函数或应用的关键字,即可免费获取对应教程一、功能说明我们在日常办公的时候,经常会碰到文件名不规范,想要整理很不方便,如果一个个修改文件或者文件夹名称吧,很麻烦。...
  • Vba-Challange-源码

    2021-02-13 15:11:59
    使用文件夹名称来对应挑战: VBAStocks 。 在刚创建的文件夹内,添加任何VBA文件。 这些将是每个分析运行的主要脚本。 将以上更改推送到GitHub或GitLab。 档案 -在开发脚本时使用它。 -在此数据上运行脚本以生成...
  • FSO对象是什么鬼?...FSO 对象模型可以实现文件(夹)的创建、改变、移动和删除等常见操作,也可以获取文件(夹)的名称、大小、属性、创建日期或最近修改日期等信息,还可以检测是否存在指定的文件夹。通过F...
  • 转贴自 http://www.excelperfect.com/2009/08/06/handlefileswithvba2/ 使用VBA操作文件(2):处理文件的VBA函数和语句下面...CurDir函数CurDir函数用于获取当前文件夹的路径名称,其语法为:CurDir([drive])其中,参数d
  • Excel_VBA教程

    2014-09-22 11:36:34
    2.更改文件或文件夹名称(NAME函数) 145 3.检查文件或文件夹是否存在(DIR函数) 145 4.获得文件修改的日期和时间(FILEDATETIME函数) 147 5.获得文件大小(FILELEN函数) 147 6.返回和设置文件属性(GETATTR函数...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧174 获得当前文件夹名称 12 技巧175 创建和删除文件夹 12 技巧176 重命名文件或文件夹 12 技巧177 复制指定的文件 12 技巧178 删除指定的文件 12 技巧179 搜索特定的文件 12 技巧180 使用WSH处理文件 12 180-1...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    01009获取文件夹的路径 01010获取路径分隔符 01011获取Excel主窗口标题栏的名称 01012获取Excel窗口的状态(大小) 01013获取Excel主窗口的高度和宽度 01014获取Excel主窗口的左边界位置和顶端位置 01015获取在...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    技巧174 获得当前文件夹名称 422 技巧175 创建和删除文件夹 422 技巧176 重命名文件或文件夹 423 技巧177 复制指定的文件 424 技巧178 删除指定的文件 425 技巧179 搜索特定的文件 426 技巧180 使用WSH处理文件 ...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    2.更改文件或文件夹名称(NAME函数) 145 3.检查文件或文件夹是否存在(DIR函数) 145 4.获得文件修改的日期和时间(FILEDATETIME函数) 147 5.获得文件大小(FILELEN函数) 147 6.返回和设置文件属性(GETATTR函数...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    目 录 一、VBA语言基础...................................................................................................................1 第一节 标识符....................................................

空空如也

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

vba获取文件夹名称