vba提取文件名和文件夹|Excel VBA列出某文件夹下子文件夹及文件名

vba提取文件名和文件夹|Excel VBA列出某文件夹下子文件夹及文件名的第1张示图

『壹』 用EXCEL VBA获取指定目录下的文件名(包括文件夹名)

1、首先利用快捷键“Windows键+R”打开“运行”窗口

『贰』 VBA 如何取C盘下和C盘文件夹下所有Excel文件名称,并将这些文件名放到Excel文件上。

VBA遍历文件夹常用有三种方法,这三种方法中,filesearch不适合2007和2010版本,而且速度比较慢,递归法速度也慢。只有用DIR加循环的方法,速度飞快。下面是三种方法的代码: 1、filesearch法Sub test3()Dim wb As WorkbookDim i As LongDim tt = Timer With Application.FileSearch '调用fileserch对象 .NewSearch '开始新的搜索 .LookIn = ThisWorkbook.path '设置搜索的路径 .SearchSubFolders = True '搜索范围包括 LookIn 属性指定的文件夹中的所有子文件夹 .Filename = "*.xls" '设置搜索的文件类型 ' .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then '如果找到文件 For i = 1 To .FoundFiles.Count 'On Error Resume Next Cells(i, 1) = .FoundFiles(i) '把找到的文件放在单元格里 Next i Else MsgBox "没找到文件" End If End With MsgBox Timer – tEnd Sub 2、递归法 Sub Test()Dim iPath As String, i As LongDim tt = Timer With Application.FileDialog(msoFileDialogFolderPicker) .Title = "请选择要查找的文件夹" If .Show Then iPath = .SelectedItems(1) End If End With If iPath = "False" Or Len(iPath) = 0 Then Exit Sub i = 1 Call GetFolderFile(iPath, i) MsgBox Timer – t MsgBox "文件名链接获取完毕。", vbOKOnly, "提示" End SubPrivate Sub GetFolderFile(ByVal nPath As String, ByRef iCount As Long)Dim iFileSys'Dim iFile As Files, gFile As File'Dim iFolder As Folder, sFolder As Folders, nFolder As Folder Set iFileSys = CreateObject("Scripting.FileSystemObject") Set iFolder = iFileSys.GetFolder(nPath) Set sFolder = iFolder.SubFolders Set iFile = iFolder.Files With ActiveSheet For Each gFile In iFile ' .Hyperlinks.Add anchor:=.Cells(iCount, 1), Address:=gFile.path, TextToDisplay:=gFile.Name iCount = iCount + 1 Next End With '递归遍历所有子文件夹 For Each nFolder In sFolder Call GetFolderFile(nFolder.path, iCount) NextEnd Sub 3、dir循环法Sub Test() '使用双字典,旨在提高速度 Dim MyName, Dic, Did, i, t, F, TT, MyFileName 'On Error Resume Next Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.BrowseForFolder(0, "选择文件夹", 0, 0) If Not objFolder Is Nothing Then lj = objFolder.self.path & "\" Set objFolder = Nothing Set objShell = Nothing t = Time Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象 Set Did = CreateObject("Scripting.Dictionary") Dic.Add (lj), "" i = 0 Do While i < Dic.Count Ke = Dic.keys '开始遍历字典 MyName = Dir(Ke(i), vbDirectory) '查找目录 Do While MyName <> "" If MyName <> "." And MyName <> ".." Then If (GetAttr(Ke(i) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录 Dic.Add (Ke(i) & MyName & "\"), "" '就往字典中添加这个次级目录名作为一个条目 End If End If MyName = Dir '继续遍历寻找 Loop i = i + 1 Loop Did.Add ("文件清单"), "" '以查找D盘下所有EXCEL文件为例 For Each Ke In Dic.keys MyFileName = Dir(Ke & "*.xls") Do While MyFileName <> "" Did.Add (Ke & MyFileName), "" MyFileName = Dir Loop Next For Each Sh In ThisWorkbook.Worksheets If Sh.Name = "XLS文件清单" Then Sheets("XLS文件清单").Cells.Delete F = True Exit For Else F = False End If Next If Not F Then Sheets.Add.Name = "XLS文件清单" End If Sheets("XLS文件清单").[A1].Resize(Did.Count, 1) = WorksheetFunction.Transpose(Did.keys) TT = Time – t MsgBox Minute(TT) & "分" & Second(TT) & "秒"End Sub

『叁』 求助大神,请帮忙修改提取取合并源文件名及工作表名的VBA代码,谢谢!

由于不同的表宽度可能不同,合并后的工作簿、工作表名称还是放在A列合适些,代码如下:

Option Explicit

Sub 合并文件夹下所有文件的所有表到一个新表中()

Dim MyPath$, MyName$, i&, n&

Dim st As Worksheet, st1 As Worksheet

Workbooks.Add '新建文件作为汇总结果文件

Set st = ActiveSheet '汇总的结果表

n = 1 '汇总开始的行

MyPath = ThisWorkbook.Path '汇总工具程序所在的文件夹下的所有文件

MyName = Dir(MyPath & "" & "*.xls")

Do While MyName <> ""

If MyName <> ThisWorkbook.Name Then

With Workbooks.Open(MyPath & "" & MyName)

For Each st1 In .Worksheets

i = st1.UsedRange.Rows.Count

If i <> 1 Or st1.Cells(1, 1) <> "" Then '跳过空表

st.Cells(n, 1).Resize(i, 1) = .Name & ":" & st1.Name '填名称

st1.UsedRange.Copy st.Cells(n, 2) '复制内容

n = n + i '移动指针到末尾

End If

Next

.Close False

End With

End If

MyName = Dir

Loop

End Sub

『肆』 vba读取文件夹中的文件名

提取当前文件夹下的文件名称并放在A列Sub 按钮1_Click()Application.ScreenUpdating = FalseSet fso = CreateObject("scripting.filesystemobject")Set ff = fso.getfolder(ThisWorkbook.Path) 'ThisWorkbook.Path是当前代码文件所在路径,路径名可以根据需求修改ActiveSheet.UsedRange.ClearContentsa = 1For Each f In ff.FilesRem 如果不需要提取本代码文件名,可以增加if语句 if f.name<> thisworkbook.name then…..Rem 如果值需要提取某类文件,需要对f.name的扩展名进行判断Rem 个人感觉split取 扩展名:split(f.name,".")(ubound(split(f.name,"."))),然后再判断,避免文件名还有其他“.”Cells(a, 1) = f.Name '相对路径名Cells(a, 2) = f '全路径名a = a + 1Next fApplication.ScreenUpdating = TrueEnd Sub

『伍』 Excel VBA列出某文件夹下子文件夹及文件名

遍历文件夹 并列出文件 & 文件夹 名 代码如下:

在文件夹内 新建 个 Excel文件

Excel文件内 按 Alt+F11 视图–代码窗口, 把如下代码复制进去, F5运行

Sub遍历文件夹()'OnErrorResumeNextDimfn(1To10000)AsStringDimf,i,k,f2,f3,xDimarr1(1To100000,1To1)AsString,qAsIntegerDimtt=Timerfn(1)=ThisWorkbook.path&""i=1:k=1DoWhilei<UBound(fn)Iffn(i)=""ThenExitDof=Dir(fn(i),vbDirectory)DoIfInStr(f,".")=0Andf<>""Thenk=k+1fn(k)=fn(i)&f&""EndIff=DirLoopUntilf=""i=i+1Loop'*******下面是提取各个文件夹的文件***Forx=1ToUBound(fn)Iffn(x)=""ThenExitForf3=Dir(fn(x)&"*.*")DoWhilef3<>""q=q+1arr1(q,1)=fn(x)&f3f3=DirLoopNextxActiveSheet.UsedRange=""Range("a1").Resize(q)=arr1MsgBoxFormat(Timer-t,"0.00000")EndSub

效果如图:

『陆』 excel怎样用vba自动提取文件夹内的文件名

excel中用vba实现自动提取文件夹内的文件名的方法如下:

1、新建一个vba宏脚本

『柒』 VBA一次性提取文件名的方法

没理解你这里为什么用“一次性”这个词?

问题应该是:“获取指定文件夹的所有文件”。

DimMyPathAsStringDimMyFilesNameAsStringDimnAsLongMyPath="C:ABC"MyFilesName=""n=0IfRight$(MyPath,1)<>""ThenMyPath=MyPath&""MyResult=Dir(MyPath)DoWhileLen(MyResult)>0'DoEventsMyFilesName=MyFilesName&MyResult&vbCrLfn=n+1MyResult=DirLoopMsgBox"有文件:"&n&"个"&vbCrLf&vbCrLf&MyFilesName

『捌』 求助大神,请帮忙修改提取取合并源文件名及工作表名的VBA代码,谢谢!

合并后的名字建议放在A列,代码如下:Option ExplicitSub 合并文件夹下所有文件的所有表到一个新表中() Dim MyPath$, MyName$, i&, n& Dim st As Worksheet, st1 As Worksheet Workbooks.Add '新建文件作为汇总结果文件 Set st = ActiveSheet '汇总的结果表 n = 1 '汇总开始的行 MyPath = ThisWorkbook.Path '汇总工具程序所在的文件夹下的所有文件 MyName = Dir(MyPath & "\" & "*.xls") Do While MyName <> "" If MyName <> ThisWorkbook.Name Then With Workbooks.Open(MyPath & "\" & MyName) For Each st1 In .Worksheets i = st1.UsedRange.Rows.Count If i <> 1 Or st1.Cells(1, 1) <> "" Then '跳过空表 st.Cells(n, 1).Resize(i, 1) = .Name & ":" & st1.Name '填名称 st1.UsedRange.Copy st.Cells(n, 2) '复制内容 n = n + i '移动指针到末尾 End If Next .Close False End With End If MyName = Dir LoopEnd Sub

『玖』 vba提取多层文件夹的*.xls文件,根据获取到的文件名及路径逐个打开*.xls文件,去判断某几列有多少个数据

一、所需DOS命令

dir [drive:][path] /b > [drive:][path]filename

二、应用实例

如下图,在D盘中,有一个名称为“TQIPC”的文件夹,这个文件夹里面,存放了很多的照片!

看到了没有,文件夹中的照片名称,自动就显示在excel表格中了!

该dos命令非常强大,用好dos命令,可省去我们很多的功夫。

三、知识扩展

下面,再给大家一个例子,即,自动根据照片(根据人物名称),建立文件夹。

如果某个文件夹下面,您存放的是某些人物的照片,并且,每个人物的照片,都使用其名字来命名;这个时候,如何要自动根据人物的自动建立其对应的文件夹,也相当方便!

操作的方法是,先根据上述的方法,获取所有人物的照片的名称,生成EXCEL文件;

然后,在人物名称列前面,插入一列,并输入MD;

接下来,使用查找替换功能,将excel文件中的人物名称,去掉扩展名(只保留名字);

最后,将excel的内容,复制粘贴到记事本中,现在,我们就得到了形如:“MD人物名称”这样的命令格式了。(md 文件名称,该命令格式,是使用来建立文件夹的命令,上述的操作,都是为此做准备!)

将记事本文件保存成为形如:124.bat格式的文件,最后,双击此文件,文件夹名称就自动建立好了!

『拾』 vba提取文件路径 利用下面的代码提取出来的路径如何提起的Excel

摘要首先打开Excel数据表,在开发工具中打开VBA编辑器。

未经允许不得转载:山九号 » vba提取文件名和文件夹|Excel VBA列出某文件夹下子文件夹及文件名

赞 (0)