VBA 怎么提取二级、三级文件夹下的文件

作者&投稿:依储 (若有异议请与网页底部的电邮联系)
EXCEL VBA 获取文件夹及子文件夹下所有文件并建立超链接~

还没有解决吗?那我就来试一下。
(1)首先,楼主先新建一个excel,名称楼主自己写,怎样都行,然后将其打开。
(2)打开后按住Alt再按F11,这样就会打开vba代码编辑器
(3)点菜单栏上的“插入”,选择“模块”,这样在左下角就会出现一个“模块1”
(4)双击“模块1”,右边就会出现“模块1”的编辑界面,将以下代码复制,并粘贴到这个界面中,按F5运行。
Sub 遍历文件夹()'Columns(1).Delete On Error Resume NextDim f As StringDim file() As StringDim i, k, xx = 1i = 1: k = 1ReDim 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 + 1LoopFor 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 LoopNextEnd Sub(5)在出现的对话框中,将你要查找的文件的地址复制到对话框中,按确定,就完成了。

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


图1.打开vba编辑器。


图2.运行代码。


图3.结果。

用DIR这个函数来列出某个文件夹下的内容,
以excel里的为例

Dim i As Integer
i = 1
Sheet1.Range("A" & i) = Dir("C:\")
Do While True
i = i + 1
Sheet1.Range("A" & i) = Dir
If Sheet1.Range("A" & i) = "" Then Exit Do

Loop

如果只是修改你说的内容就比较简单,要提取子文件夹中的文件,用VBA也是可以的。写起来有点麻烦,还不如直接用个DOS命令先提取文件名,这样来得快:
1:运行->cmd然后会出来命令提示符,再输入dir e:\access /B/S *.xls > e:\data.xls (以上是直接把e盘access这个文件夹中的所有.xls文件和子文件夹中的.xls文件名提取出来并保存到e盘的data.xls中)(data.xls是自己生成不用新建)
2:打开data.xls文件,就会发现A列全是文件路径和名称,然后在B列把A列的文件名分离出来。
然后建一个commandbutton,输入以下代码:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False '关闭屏幕刷新
Application.DisplayAlerts = False '禁用所有事件
for i=1 to range("a65536").end(xlup).row
Workbooks.Open range("a"&i)
For Each sht In Sheets
If sht.Name = "Sheet1" Then
sht.Range("D3") = "己复核"
End If
Next
workbooks(trim(range("b"&i))).Close True
next
Application.DisplayAlerts = True ' 启用所有事件
Application.ScreenUpdating = True '打开屏幕刷新
END SUB


禄丰县13646204949: excel怎样用vba自动提取文件夹内的文件名 -
花花烟酸: excel中用vba实现自动提取文件夹内的文件名的方法如下:1、新建一个vba宏脚本2、写入如下代码:Function GetFileList(FileSpec As String) As Variant' Returns an array of filenames that match FileSpec' If no matching files are found, it returns ...

禄丰县13646204949: 如何用VBA实现以下功能: 读取指定文件夹下的某些文件?(比如文件名含有A关键的文件) -
花花烟酸: 使用fso系统,msdn搜索一下就可以 或者使用dir函数,一样的好用 关键字就需要自己根据获取的文件名进行判断了.

禄丰县13646204949: VBA提取文件夹路径 -
花花烟酸: fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt") If fileToOpen <> False ThenMsgBox "Open " & fileToOpen End If

禄丰县13646204949: vba的判断文件名,然后提取不同工作表内的数据 -
花花烟酸: 你应该是要遍历文件夹下book工作簿,而不应该遍历所有文件,如果不是book文件,会找不到sheet工作表,这样会产生错误的.修改代码如下123456789101112131415161718192021222324252...

禄丰县13646204949: 怎样用vba取得子文件夹一览 -
花花烟酸: 用DIR这个函数来列出某个文件夹下的内容,以excel里的为例 Dim i As Integer i = 1 Sheet1.Range("A" & i) = Dir("C:\") Do While True i = i + 1 Sheet1.Range("A" & i) = Dir If Sheet1.Range("A" & i) = "" Then Exit Do Loop

禄丰县13646204949: Excel VBA 怎样获取指定目录下所有的文件(网上找到的程序都不对)
花花烟酸: 此过程能把指定文件夹下的文件名放入Sheet1的A列. Public Sub findname() Dim fs, f, f1, fc, s Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder("d:\33") '在括号内输入你指定的目录 Set fc = f.Files i = 1 For Each f1 In fc Sheet1.Cells(i, 1) = f1.Name i = i + 1 s = s &amp; f1.Name s = s &amp; vbCrLf Next End Sub

禄丰县13646204949: 提取多个文件夹下的excel数据,怎么编写vba代码,如提取A、B、C下相同名字的ecxel中数据 -
花花烟酸: 遍历目录,打开,过滤,存入数组,最后回写excel再看看别人怎么说的.

禄丰县13646204949: 怎么用VBA代码获取文件所在地址? -
花花烟酸: 返回应用程序完整路径 Application.Path 返回当前工作薄的路径 ThisWorkbook.Path 返回当前默认文件路径: Application.DefaultFilePath Application.ActiveWorkbook.Path 只返回路径 Application.ActiveWorkbook.FullName 返回路径及工作簿文件名 Application.ActiveWorkbook.Name 返回工作簿文件名

禄丰县13646204949: VBA提取当前工作簿所在文件夹的名称?
花花烟酸: sub t() dim str str=ThisWorkbook.Path MsgBox Right(str, Len(str) - InStrRev(str, "\")) end sub用路径整理下就是文件夹了啊~

禄丰县13646204949: VBA一次性提取文件名的方法 -
花花烟酸: 没理解你这里为什么用“一次性”这个词?问题应该是:“获取指定文件夹的所有文件”.Dim MyPath As String Dim MyFilesName As String Dim n As Long MyPath = "C:\ABC\" MyFilesName = "" n = 0 If Right$(MyPath, 1) <> "\" Then ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网