vba 遍历一个文件夹(可浏览指定),子目录不需要遍历,然后把文件名和路径存入数组。

如题所述

贴个VBS代码的吧,懒得改成VBA的了,主要部分应该是一样的。

Const MY_COMPUTER = &H11&
Const WINDOW_HANDLE = 0
Const OPTIONS = 0
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(WINDOW_HANDLE, "Select a folder:", OPTIONS, strPath)
If objFolder Is Nothing Then
Wscript.Quit
End If
Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path

Set ws=WScript.CreateObject("wscript.shell")
w=ws.CurrentDirectory
Set fso=WScript.CreateObject("scripting.filesystemobject")
Set fs=fso.GetFolder(objPath)
Set f=fs.SubFolders

set ie=wscript.createobject("internetexplorer.application","event_") '创建ie对象'

ie.menubar=0 '取消菜单栏'
ie.addressbar=0 '取消地址栏'
ie.toolbar=0 '取消工具栏'
ie.statusbar=0 '取消状态栏'
ie.width=600 '宽600'
ie.height=400 '高400'
ie.resizable=0 '不允许用户改变窗口大小'
ie.navigate "about:blank" '打开空白页面'
ie.left=fix((ie.document.parentwindow.screen.availwidth-ie.width)/2) '水平居中'
ie.top=fix((ie.document.parentwindow.screen.availheight-ie.height)/2) '垂直居中'
ie.visible=1 '窗口可见'
with ie.document '以下调用document.write方法,'

.write "<BODY>"
.write "Folder Size List"
.write "<table border="
.write "<TABLE>"

Dim FolderSize
on error resume next
For Each uu In f
If uu.Attributes<>22 then

.write "<TR>"
.write "<TD>" & uu.Path & "</TD>"
.write "<TD>" & CInt(uu.Size/1024/1024) & "MB" & "</TD>"
.write "</TR>"
End if
Next

.write "</TABLE>"
.write "</BODY>"
.write "</br>"

MsgBox "read finish"

End With
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-12-14
用dir函数,在循环中把dir返回的文件名赋给数组本回答被网友采纳
第2个回答  2011-12-25
With Application.FileSearch
.NewSearch
.LookIn = mainpath
.SearchSubFolders = True
.Filename = "*.*"
FileType = msoFileTypeAllFiles 'msoFileTypeExcelWorkbooks
jdjd = .Execute()
If .Execute() > 0 Then
For I = 1 To .FoundFiles.Count
On Error Resume Next

If Workbooks("CDMA_CDD_TOOLS").Sheets("tools").hssite.Value = True Then
Workbooks.OpenText Filename:=.FoundFiles(I), _
DataType:=xlDelimited, Space:=True, ConsecutiveDelimiter:=True

'Workbooks.OpenText Filename:=.FoundFiles(I), DataType:=xlDelimited, Space:=True, ConsecutiveDelimiter:=True
tnameB = ParseFileName(.FoundFiles(I))
Set WSB = Workbooks(tnameB)
Call FormatHsSite.formatsheets
tnamea = Trim(Mid(Cells(1.2), 4, 30))
scopyHS WSA, WSB, tnamea, tnameB
End If
dk = 1
If Workbooks("CDMA_CDD_TOOLS").Sheets("tools").ipsite.Value = True Then
Set WSB = Workbooks.Open(Filename:=.FoundFiles(I))
tnamea = ParseFileName(.FoundFiles(I))
tnameB = "Sheet0"
scopyIP WSA, WSB, tnamea, tnameB
wsbname = ""
End If

Application.StatusBar = "正在处理:第" & I & "个文件"
Application.ScreenUpdating = False

Next I
Else
MsgBox "Folder " & sFolder & " contains no required files"
End If

vba 遍历一个文件夹(可浏览指定),子目录不需要遍历,然后把文件名和路径...
贴个VBS代码的吧,懒得改成VBA的了,主要部分应该是一样的。Const MY_COMPUTER = &H11& Const WINDOW_HANDLE = 0 Const OPTIONS = 0 Set objShell = CreateObject("Shell.Application")Set objFolder = objShell.Namespace(MY_COMPUTER)Set objFolderItem = objFolder.Self strPath = objFolderIte...

求助]如何用VBA遍历指定目录下的所有子文件夹和文件-字典模式
F是一个临时逻辑变量,保存本程序工作簿中是否已有名为“XLS文件清单”的工作表,方便后续的代码处理,如果没有,就先建这个工作表,后面才能放置遍历出来的文件夹。经过对代码的分析,以下两行完全可以省略 Else F = False

vba如何判断指定路径的文件夹?
在当前文件夹下进行指定后缀文件遍历,对上面的代码进行稍微修改即可。后缀 = 指定后缀.后缀 是从窗体进行输入的,这里不用管。这段代码和上面的代码最大的不同就是使用了通配符*。具体的可以结合前文的dir基础知识。实现层层嵌套文件夹遍历是最难点。首先将前面的遍历当前文件路径下的文件写成一个函数。...

VBA 如何取C盘下和C盘文件夹下所有Excel文件名称,并将这些文件名放到Ex...
1、filesearch法 Sub test3()Dim wb As Workbook Dim i As Long Dim t t = Timer With Application.FileSearch '调用fileserch对象 .NewSearch '开始新的搜索 .LookIn = ThisWorkbook.path '设置搜索的路径 .SearchSubFolders = True '搜索范围包括 LookIn 属性指定的文件夹中的所有子文件夹 .Fi...

Excel VBA列出某文件夹下子文件夹及文件名
遍历文件夹 并列出文件 & 文件夹 名 代码如下:在文件夹内 新建 个 Excel文件 Excel文件内 按 Alt+F11 视图--代码窗口, 把如下代码复制进去, F5运行 Sub 遍历文件夹() 'On Error Resume Next Dim fn(1 To 10000) As String Dim f, i, k, f2, f3, x Dim arr1(1 To 100000,...

如何用VBA遍历指定目录下的所有子文件夹Excel文件的所有工作表_百度知 ...
功能: 查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)'函数名: FileAllArr'参数1: Filename 需查找的文件夹名 不含最后的""'参数2: FileFilter 需要过滤的文件名,可省略

求助]如何用VBA遍历指定目录下的所有子文件夹和文件-字典模式
F是一个临时逻辑变量,在循环查找工作簿中是否有名为“XLS文件清单”的工作表,找到为“真”,否则为假。目的是方便后续的代码处理,如果没有这个工作表,则先创建建这个工作表,后面才能放置遍历出来的文件夹及文件名。

VBA——显示当前路径下所有文件名(文末含成品)
首先,使用dir函数遍历目录下的文件。基本用法是首次指定文件夹路径后,后续调用会依次返回该目录下的下一个文件名,就像Python中的迭代器。dir遍历完所有文件名后,返回空字符串,再次调用会报错。若指定具体文件路径,dir会返回文件名,不存在则为空。dir功能有局限性,这时引入filesystemobject(fso)辅助...

如何用VBA遍历指定目录下的所有子文件夹Excel文件的所有工作表_百度知 ...
下面的代码是手工码的,不晓得有没有问题。sub test()dim f as string,mPath as string,Wb as workbook,Sh as workSheetif workbooks.count>1 then msgbox "关闭其他工作簿!":exit submPath = "D:\\临时文件夹\\" '指定路径,注意分层标记\\f=dir(mPath & "*.xls*")do while f<>"" if...

VBA中怎么遍历所选路径中所有文件夹及其子文件夹(多个子文件),并返回...
Sub 获取所有文件夹() Dim Directory As String With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = Application.DefaultFilePath & "\\" .Title = "请选择一个文件夹" .Show If .SelectedItems.Count = 0 Then Exit Sub Else Directory = .Selecte...

相似回答