批量提取文件名的方法 想做个内容列表,如果把文件名字一个一个复制,再粘贴太麻烦了;可以利用DOS命令行(tree和dir)读取某个文件夹下所有文件的名字(含后缀),然后到出到TXT文本文件。 1)tree——以树型结构显示磁盘目录结构命令 TREE [drive:][path] [/F] [/A] > [存放的路径] /F 显示每个文件夹中文件的名称;省略时,只显示目录,不显示目录下的文件。 /A 使用 ASCII 字符,而不使用扩展字符。 可以在命令行窗口敲「tree /?」或「help tree」看帮助 ①tree C:\WINDOWS\system32 /f > C:\mysystem32.txt 把C:\WINDOWS\system32下的所有目录及文件结构以树状结构导出,以文本文件mysystem32保存在文件夹c:\下。 ②如果要导出C盘的所有文件结构,必须使用类似下列命令「tree c:\ > c:\mycpan.txt」,而不能是「tree c: > c:\mycpan.txt」(盘符后面需要加反斜杠,目录后面不需要反斜杠)。 2)dir——显示磁盘目录命令 DIR [drive:][path][filename] [/P] [/W] [/A[[:]attributes]] [/O[[:]sortorder]] [/S] [/B] [/L] [/V] [/4] /P 当查看的目录太多,无法在一屏显示完,屏幕会一直往上卷,不容易看清,加上/P参数后,屏幕上会分面一次显示23行的文件信息,然后暂停,并提示;Press any key to continue /W 只显示文件名,至于文件大小及建立的日期和时间则都省略(默认显示)。 ①直接输入Dir命令后Enter键,可查看当前目录下的资源列表。 ②dir C:\WINDOWS\system32 /o:n > C:\mysystem32.txt 把C:\WINDOWS\system32下的所有文件名按字母排序导出到C盘mysystem32文本文件中,此文件可导入excel作进一步处理。 ③也可以cd \WINDOWS\system32(切换到该目录下),再输入:dir >> mysystem32.txt 3)CD或CHDIR——(Change Directory)切换当前目录命令 CD[盘符:][路径名][子目录名] ①如果省略路径和子目录名则表示在当前目录进行操作; ②返回上级目录cd ..(两点) ③返回根目录即盘符cd \(反斜杠) ④如你当前是在c:盘下,要到d:盘,只需键入d:回车就行了。 ⑤cd windows→进入当前目录下的windows文件夹;cd \windows→进入当前根目录的下一级的windows目录中。 【DOS其它辅助命令】 cls:清屏; Exit:退出; help [DOS命令];(等于命令帮助参数:[DOS命令]/?) 【DOS下特殊符号】 .(一点):代表当前文件夹; ..(两点):代表当前文件夹的上级文件夹; 正斜杠/后面DOS命令的参数,反斜杠\后加的是路径(有区别于网络路径)。互联网时代,除了URL中要用到斜杠外,其他地方很少见到它的身影。 【DOS常用快键键】 ESC:清除当前命令行; Ctrl+M:表示回车确认键; Alt+F7:清除所有曾经输入的命令历史记录; Alt+PrintScreen:截取屏幕上当前命令窗里的内容; “↑”或“↓”:重复输入已经输入过的命令; F3:自动输入上次执行过的命令。 【DOS下复制粘贴】 DOS下不能直接复制粘贴,「Ctrl+C」和「Ctrl+V」不起作用,右键菜单中包括“标记”、“复制”、“粘贴”等命令;也可以先在记事本中写好,将其粘贴到cmd.exe程序中。 其他方法 1)若是音乐文件,可将音乐文件拖进千千静听等播放软件,然后另存为播放列表。此列表用记事本打开即可查看文件名清单。 2)拖把更名器 文件→导出当前文件列表(默认不显示文件后缀名,选型-设置-同时导出文件扩展名) 3)文件名提取工具/_\ 一个超级实用的傻瓜工具,绿色软件,无须安装,只需鼠标一点即可实现对磁盘某目录下的文件进行文件名一次批量提取。 写了一小部分,可以获取文件夹下所有文件名称,路径,大小,创建日期,不知道能否对你有帮助。 1.添加VBA代码,选择新插入的模块后,插入以下代码 Sub getpath() Range("A2:C1000").ClearContents '清空A2:C1000列 On Error Resume Next Dim shell As Variant Set shell = CreateObject("Shell.Application") Set filePath = shell.BrowseForFolder(&O0, "选择文件夹", &H1 + &H10, "") '获取文件夹路径地址 Set shell = Nothing If filePath Is Nothing Then '检测是否获得有效路径,如取消直接跳出程序 Exit Sub Else gg = filePath.Items.Item.Path End If Set obj = CreateObject("Scripting.FileSystemObject") '定义变量 Set fld = obj.getfolder(gg) '获取路径 For Each ff In fld.Files '遍历文件夹里文件 m = m + 1 Cells(m + 1, 1) = ff.Name Cells(m + 1, 2) = ff.Path Cells(m + 1, 3) = ff.Size Cells(m + 1, 4) = ff.DateCreated Next End Sub 2.运行宏(alt+F8),宏的名称为getpath 实战:Excel VBA 实现读取指定文件夹下全部文件名与文件夹名 标签: excel vba 宏 程序 自动 读取 文件夹名 文件名 文件属性 it 分类: 数据模型 前日在网上搜索可以读取指定文件夹下全部文件夹及文件名到EXCEL表格中的程序无果,于是自己编了一个,方便以后大家遇到同样的问题。 相信大家和我一样在管理公私文件时总是喜欢随处乱放,找寻起来只能利用Microsoft的搜索功能了,而有时因为忘记了文件名甚至找都找不到,那种强迫感很恐怖的。 首先看一下结果: 程序帮助调取了指定文件夹下面所有的文件名、文件后缀、文件路径、文件夹名等等,如果您也写过VBA程序,那么相信还会发挥您的所长加入文件大小、文件创建日期等等属性丰富这个程序的。 · jove_loop_total: 总程序 · jove_loop_step1:清楚原有格式、加入标题行并调用下一个程序 · OkExcel(sPath As String):读取文件与文件夹信息 · jove_loop_step2:循环读取文件夹属性的那些字段,并读取其内部的文件们 --- 类似蜘蛛爬 宏程序源码: Sub jove_loop_total() 'D盘下全部文件夹及文件读取用插件 Call jove_loop_step1 Call jove_loop_step2 MsgBox "Done" End Sub Sub jove_loop_step1() '加上标题行 Columns("A:C").Clear Cells(1, 1) = "文件名" Cells(1, 2) = "类型" Cells(1, 3) = "所在位置" Dim jove_address As String jove_address = ThisWorkbook.Path Call OkExcel(jove_address & "\") End Sub Sub OkExcel(sPath As String) Dim i As Long Dim sTxt As String i = Range("A65535").End(xlUp).Row sTxt = Dir(sPath, 31) Do While sTxt <> "" On Error Resume Next If sTxt <> ThisWorkbook.Name And sTxt <> "." And sTxt <> ".." And sTxt <> "081226" Then '忽略哪些隐藏系统文件夹 i = i + 1 Cells(i, 1) = "'" & sTxt If (GetAttr(sPath & sTxt) And vbDirectory) = vbDirectory Then '如果是文件夹 Cells(i, 2) = "文件夹" Cells(i, 3) = sPath & sTxt & "\" Cells(i, 1).Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3) Else '如果是文件 Cells(i, 2) = "文件" Cells(i, 3) = sPath & sTxt Cells(i, 1).Hyperlinks.Add Anchor:=Selection, Address:=Cells(i, 3) End If End If sTxt = Dir Loop End Sub Sub jove_loop_step2() For i = 2 To 65535 On Error Resume Next If Cells(i, 2) = "文件夹" And Cells(i, 1) <> "Foxmail" And Cells(i, 1) <> "RECYCLER" And Cells(i, 1) <> "System Volume Information" And Cells(i, 1) <> "mail" Then '忽略哪些隐藏系统文件夹 Call OkExcel(Cells(i, 3)) End If Next End Sub 用VB取得一个文件夹内所有文件的文件名
这个问题其实可以归结为遍历吧!其时我是想做这样一件事,把一个文件夹下的指定类型的所有文件名取出来,然后再分别打开对应文件,执行其它操作,显然必须要用用VB取得一个文件夹内所有文件的文件名,于是我做了如下实验,不过我是直接显示在了text1.text中了,同样也可以存在数组中即可! 其实主要是用如下函数即可:(文件类型可以自已改,如“*.txt”) File1.Pattern = "*.*" Text1.Text = "" Dim i As Integer For i = 0 To File1.ListCount - 1 Text1.Text = Text1.Text & File1.List(i) & Chr(13) & Chr(10) Next i 代码如下: Private Sub Command1_Click() File1.Pattern = "*.*" Text1.Text = "" Label1.Caption = "*********Sum=:" & File1.ListCount & " *********" Dim i As Integer For i = 0 To File1.ListCount - 1 Text1.Text = Text1.Text & File1.List(i) & Chr(13) & Chr(10) Next i End Sub Private Sub Command2_Click() Text1.Text = "" Label1.Caption = "********* *********" End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub Private Sub Form_Load() Text1.Text = "" Label1.Caption = "********* *********" End Sub VBA中利用Dir遍历文件 如何知道代码中函数的什么意思
选择系统分类的时候竟然找不到和VBA相关的,甚至连Office相关的项也没有,是不是因为这些方面太低级了很丢人哪。 下面简单说一下在用VBA开发的时候如何遍历某一目录中的文件,从而对其进行处理。 现实应用中,常常会遇到这样的情况,某个目录下有大量的Excel数据文件,现在需要对这些文件中的数据进行批量处理。现在的问题就来了,由于每次生成的数据文件名称都不固定,所以无法在程序中直接写死。 其实通过VBA内置的Dir函数可以解决这一问题。 Sub DirTest() Do xlsName = Dir("D:\ExcelTest\*.xls") If xlsName = "" Then Exit Do End If Workbooks.Open Filename:="D:\ExcelTest\" & xlsName Workbooks(xlsName).Close savechanges:=False Kill "D:\ExcelTest\" & xlsName Loop End Sub 此处是假设需要处理的数据文件全部在“D:\ExcelTest\”目录下,实际应用中可根据情况更改。以下对此过程作一些简要说明。 1.先插入一个过程,并且加入Do……Loop循环,从而实现对所有的文件进行处理 2.定义一个变量xlsName(名称可根据自己爱好随便取,但建议是好记的名称,由于VBA可以不申明,直接使用,所以我这里偷懒,把定义的语句省略掉了,默认情况下执行是没有任何问题的。如果在VBA环境中设置了强制申明,则需要添加定义变量的语句)。 3.通过一个If……End If来判断,取得的文件名是否是空(如果为空,则说明文件处理完毕),如果为空,则退出循环。 4.打开取得的文件名对应的文件 5.对数据进行相应处理(这里并没有写这些语句,实际使用时可根据自己的情况添加数据处理的语句) 6.关闭刚打开的文件 7.删除已经处理过数据的文件(如果这些数据还有他用,建议将其备份,在打开文件后,使用SaveAS另存为也可。 8.过程结束。 如何查看Dir()函数更加详细的说明,可直接在VBA编辑器中输入Dir,右键点击Dir,然后在快捷菜单中选择“定义”,在打开的“对象浏览器”中,右键单击Dir,然后选择“帮助”,即可查看Dir的详细帮助及示例。 VBA函数精选之十二(Dir函数)第1.12例 Dir函数 一、题目: 要求编写一段代码,运用Dir函数返回一个文件夹的文件列表。 二、代码: Sub 示例_1_12() Dim wjm wjm = Dir("C:\WINDOWS\WIN.ini") MsgBox wjm wjm = Dir("C:\WINDOWS\*.ini") wjm = Dir End Sub 三、代码详解 1、Sub 示例_1_12():宏程序的开始语句。宏名为示例_1_12。 2、Dim wjm :变量wjm声明为可变型数据类型。 3、wjm = Dir("C:\WINDOWS\WIN.ini") : 如果该文件存在则返回“WIN.INI”(在C:\Windows 文件夹中) ,把返回的文件名赋给变量wjm 。如果该文件不存在则wjm=””。 4、wjm = Dir("C:\WINDOWS\*.ini") :第一次调用 Dir 函数 返回带指定扩展名的文件名。如果超过一个 *.ini 文件存在,函数将返回按条件第一个找到的文件名。 5、wjm = Dir : 若第二次调用 Dir 函数,但不带任何参数,则函数将返回同一目录下的下一个 *.ini 文件。 Dir函数 返回一个字符串 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。 Dir[(pathname[, attributes])] Dir 函数的语法具有以下几个部分: pathname 可选参数。用来指定文件名的字符串表达式,可能包含目录或文件夹、以及驱动器。如果没有找到 pathname,则会返回零长度字符串 ("")。 attributes 可选参数。常数或数值表达式,其总和用来指定文件属性。如果省略,则会返回匹配 pathname 但不包含属性的文件。 |
|