首页 > 其他分享 >VBA获取文件夹下所有文件名或者文件夹名

VBA获取文件夹下所有文件名或者文件夹名

时间:2023-10-27 14:33:05浏览次数:27  
标签:VBA End Sub 文件名 arr Item 文件夹

VBA获取文件夹下所有文件名或者文件夹名

1,新建excel宏

2,在sheet中添加宏执行按钮

3,设置按钮执行的代码名

VBA代码如下:

`

点击查看代码
'选择文件按钮程序
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    Call Choose
Application.ScreenUpdating = True
End Sub
'文件或文件夹选择程序
Sub Choose()
    Dim Value%
    Value = MsgBox("选择 文件 还是 文件夹 ?" & Chr(10) & Chr(10) & "是,选择文件" & Chr(10) & "否,选择文件夹", vbYesNoCancel + vbQuestion + vbDefaultButton1, "请选择")
    If Value = vbYes Then
        Call FilePicker
    ElseIf Value = vbNo Then
        Call FolderPicker
    Else
        End
    End If
End Sub
'选择文件程序(选择文件的方式提取文件名程序)
Sub FilePicker()
    Dim i&, Item, Rng
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "请选择文件"
        .ButtonName = "确定"
        If .Show = -1 Then
            ReDim Item(1 To .SelectedItems.Count, 1 To 5)
            For i = 1 To .SelectedItems.Count
                Item(i, 1) = i
                Item(i, 2) = .SelectedItems(i)
            Next
        Else
            Exit Sub
        End If
    End With
    Entering Item
End Sub
'选择文件夹程序(选择文件夹的方式提取文件名程序)
Sub FolderPicker()
    Dim Path$, i&, j&, Item, arr(), Rng, iFSO, iFolder
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "请选择文件夹"
        .ButtonName = "确定"
        If .Show = -1 Then
            Path = .SelectedItems(1) & IIf(Right(.SelectedItems(1), 1) = "\", "", "\")
        Else
            Exit Sub
        End If
    End With
    Set iFSO = CreateObject("Scripting.FileSystemObject")
    Set iFolder = iFSO.GetFolder(Path)
    i = 1
    ReDim Preserve arr(1 To 1000)
    GetAllFiles iFolder, arr, i
    ReDim Item(1 To UBound(arr), 1 To 5)
    For j = 1 To UBound(arr)
        If arr(j) <> "" Then
            Item(j, 1) = j
            Item(j, 2) = arr(j)
        Else
            Exit For
        End If
    Next
    Entering Item
End Sub
'遍历文件夹提取文件名程序
Sub GetAllFiles(ByVal iFolder, arr, i&)
    Dim iFile, iSubFolder
    For Each iFile In iFolder.Files
        If i > UBound(arr) Then ReDim Preserve arr(1 To 1000 + i)
        arr(i) = iFile.Path
        i = i + 1
    Next
    If iFolder.SubFolders.Count = 0 Then Exit Sub
    For Each iSubFolder In iFolder.SubFolders
        GetAllFiles iSubFolder, arr, i
    Next
End Sub
'文件名录入程序
Sub Entering(ByVal Item)
    On Error Resume Next
    Dim Rng, i&
    For i = 1 To UBound(Item)
        Item(i, 3) = Right(Item(i, 2), Len(Item(i, 2)) - InStrRev(Item(i, 2), "\"))     '文件名带后缀
        Item(i, 4) = Left(Item(i, 3), InStrRev(Item(i, 3), ".") - 1)    '文件名不带后缀
        Item(i, 5) = Right(Item(i, 2), Len(Item(i, 2)) - InStrRev(Item(i, 2), ".") + 1) '文件后缀
    Next
    Range("A1").Resize(UBound(Item), 5) = Item   '文件名录入
End Sub
`

把上面代码添加到宏中,设置按钮,就可以获取文件夹名,或者文件夹下所有文件名

image

标签:VBA,End,Sub,文件名,arr,Item,文件夹
From: https://www.cnblogs.com/yffs68169/p/17792238.html

相关文章

  • 罗列大地址下文件名在A列
    importosimportopenpyxldeffind_image_folders(root_folder):"""返回所有找到的包含图片的文件夹路径"""image_folders=set()forroot,dirs,filesinos.walk(root_folder):forfileinfiles:iffile.lower().endswith......
  • (打标签)文件名空格和下划线的转换,指定数量的单元为下划线,剩下的是空格
    importosdefcount_a(filename):"""统计文件名中的a的数量,其中a是空格或下划线"""returnsum(1forcharinfilenameifcharin['_',''])defparse_a_range(a_range):"""解析a范围输入,并返回所有a的索引""&q......
  • 指定文件夹内删下划线程序(输入数字为需要保留的下划线)
    importosdefrename_files_in_directory(directory_path,underscore_input):try:#如果是范围输入,则解析范围的结束数字if'-'inunderscore_input:start,end=map(int,underscore_input.split('-'))underscore_count......
  • Python自动化测试selenium指定截图文件名方法
    这篇文章主要介绍了Python自动化测试selenium指定截图文件名方法,Selenium支持Web浏览器的自动化,它提供一套测试函数,用于支持Web自动化测试,下文基于python实现指定截图文件名方法,需要的小伙伴可以参考一下前言:Selenium支持Web浏览器的自动化,它提供一套测试函数,用于支持W......
  • java如何从Content-Disposition获取文件名的正则表达式
    一,主要是关于:post请求下载文件,如何从Content-Disposition获取文件名的正则表达式记录:HttpResponsehttpResponse=httpRequest.execute();byte[]bytes=httpResponse.bodyBytes();Stringheader=httpResponse.header("Content-Disposition")......
  • Windows文件夹加密
    第一步:创建加密文件电脑本地新建一个文件,把后缀修改为.bat,右键编辑这个文件,将以下代码拷贝进去并保存:   @echooff::关掉无关显示chcp65001CLS::清除屏幕闲杂信息titlelocktool::命名批处理标题ifEXIST"ControlPanel.{21EC2020-3AEA-1069-A2DD-08002B30309D......
  • Windows server系统共享文件夹访问一直提示密码错误
    1、打开运行窗口输入“gpedit.msc”后点击确定2、打开计算机配置>>Windows设置>>安全设置>>本地策略>>安全选项在右侧的项目中找到“网络安全:Lan管理器身份验证级别”,打开后选择“发送LM和NTLM响应(&)”网络访问:本地账户的共享和安全模型”,选择“经典=对本地用户进行身份验......
  • Python判断多个文件夹的文件夹名是否包含“分公司”或“营销中心”怎么处理?(方法二)
    大家好,我是皮皮。一、前言前几天在Python最强王者群【哎呦喂 是豆子~】问了一个Python自动化办公的问题,一起来看看吧。大佬们请问下 判断多个文件夹的文件夹名是否包含“分公司”或“营销中心” 有没有什么简便的办法可以实现呀?二、实现过程这里【东哥】给了两个示例代码,实现......
  • 从每个文件夹中复制20个文件到新的文件夹中
    情况:有个A文件夹,里面有几十个文件夹,每个文件中又有几千中图片,现在想从每个文件夹中提取20个图片作为测试集,复制到B文件夹中,B文件夹中的结构和A相同,B中也是有几十个文件夹,每个文件夹中有20张图片 操作:第一步,在B中创建和A中一样的文件夹lsA|xargs-i-tmakdirB/{}第二......
  • [转]VS2019生成项目文件.lib或.dll或exe后如何拷贝到指定的目录文件夹
    VS2019编译CloudCompare,发现生成的项目文件都是分开的,每个项目下都有自己的文件夹Debug/Release,生成Dll都放在这些单独的项目文件夹内。目标(1)通常,我们要求所有的dll和.exe都在同一个文件夹,这样调试的时候就不用再去拷贝或设置环境变量,直接设置任意.exe项目为启动项目就能调试了......