vba历遍文件夹
Ⅰ VBA历遍文件夹
你这个问题可以分解成一下几个步骤(问题);
1,如何遍历(获得该文件夹里的所有子文件夹名称)
2,每获得一个子文件夹名称,分离出其左边三位字符串。
3,把获得的三位字符串,转换成数字,不断地与已经获得的数字比较,得到并保存最大值。
4,遍历完毕;用该 最大值+1,作为新的字文件夹名的左三位。
Ⅱ VBA中怎么遍历所选路径中所有文件夹及其子文件夹(多个子文件),并返回所有的最底层的文件夹路径
答:执行"获取所有文件夹",按提示操作。文件夹清单会显示在工作表的AB列中。
Sub获取所有文件夹()
DimDirectoryAsString
WithApplication.FileDialog(msoFileDialogFolderPicker)
.InitialFileName=Application.DefaultFilePath&""
.Title="请选择一个文件夹"
.Show
If.SelectedItems.Count=0Then
ExitSub
Else
Directory=.SelectedItems(1)
EndIf
EndWith
Cells.ClearContents
CallRecursiveDir(Directory)
EndSub
PublicSubRecursiveDir(ByValCurrDirAsString)
DimDirs()AsString
DimNumDirsAsLong
DimFilesizeAsDouble
DimTotalFolders,SingleFolder
Cells(1,1)="目录名"
Cells(1,2)="日期/时间"
Range("A1:B1").Font.Bold=True
SetTotalFolders=CreateObject("Scripting.FileSystemObject").GetFolder(CurrDir).SubFolders
Cells(WorksheetFunction.CountA(Range("A:A"))+1,1)=CurrDir
Cells(WorksheetFunction.CountA(Range("B:B"))+1,2)=FileDateTime(CurrDir)
IfTotalFolders.Count<>0Then
ReDimPreserveDirs(0ToNumDirs)AsString
Dirs(NumDirs)=SingleFolder
NumDirs=NumDirs+1
Next
EndIf
Fori=0ToNumDirs-1
RecursiveDirDirs(i)
Nexti
EndSub
Ⅲ VBA中历遍文件夹中的图片为什么第二个就失效了myfile成了空值!哪里出了问题
看到有网友问如何 VBA中遍历 文件夹下(含有子文件夹) 的所有文件,就做了一个示例教程。
VBA中遍历文件夹下所有文件(含子文件夹)的方法
1)使用Dir() 的方法
2)使用VBA的filesercth对象
3)使用FileSystemObject对象及递归
各种方法存在的问题及对比
1)Dir()的方法遍历子文件夹文件不太方便
2)FileSearch方法在office 2007中微软把Application对象FileSearch方法删除了
3)所有比较安全的方法是使用 FileSystemObject对象实现遍历文件夹及子文件夹中所有文件
主要设计思路及程序要点
1)为避免显式引用FileSystemObject,我们使用Set fso = CreateObject("Scripting.FileSystemObject")创建对象
2)为了让程序更高效,我们使用了递归,在获取子文件夹文件时调用了函数自身
完整的实现代码如下(tmtony)
Dim lngSeqNo As Long '用来统计获取到的文件的个数,以便定义单元格行号
' 表格上单击的测试按钮代码 作者:tmtony
Sub 矩形圆角1_Click()
测试程序
End Sub
’自定义过程
Public Sub 测试程序()
Dim strPath As String
Dim fso As Object, objFolder As Object
Set fso = CreateObject("Scripting.FileSystemObject")
lngSeqNo = 0
strPath = "E:\NewTools\TreesizePro\TreeSize_7.1.3_Portable" '可改成你自己的指定目录
Set objFolder = fso.GetFolder(strPath)
GetAllFiles objFolder
' ReDim Preserve arrFiles(1 To lngFileCnt)
' For i = 1 To lngFileCnt
' Debug.Print arrFiles(i)
' Next i
End Sub
'自定义的获取子文件夹所有文件的过程,递归调用
Sub GetAllFiles(ByVal objFolder As Object)
Dim objFile As Object ' File
Dim objSubFolder As Object ' Folder
Dim arrFiles()
Dim lngFileCnt As Long
Dim i As Long
ReDim arrFiles(1 To 1000)
lngFileCnt = 0
For Each objFile In objFolder.Files
lngFileCnt = lngFileCnt + 1
If lngFileCnt > UBound(arrFiles) Then ReDim Preserve arrFiles(1 To lngFileCnt + 1000)
lngSeqNo = lngSeqNo + 1
' arrFiles(lngFileCnt) = objFile.Path
ActiveSheet.Cells(lngSeqNo, 1).Value = objFile.Path
Next objFile
If objFolder.SubFolders.Count = 0 Then Exit Sub
For Each objSubFolder In objFolder.SubFolders
GetAllFiles objSubFolder
Next
End Sub
执行后的结果写到Excel单元格中,效果如下
原创不易,如果您觉得这个示例能帮到您。请给我们点个赞及关注一下我们。谢谢
Ⅳ 如何用excel vba按关键字选择性的遍历文件夹搜索文件
Excel怎样批量提取文件夹和子文件夹所有文件
怎样批量提取文件夹下文件名Ⅳ vba 遍历指定文件夹(含子目录)获取文件名,哪种方法速度最快
Sub LoopAllExcelFilesInFolder()
Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog
'这里很关键,决定宏执行快慢的关键
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
'打开目录选择框
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "请选择目录"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
'取消选择
NextCode:
myPath = myPath
If myPath = "" Then GoTo ResetSettings
'指定过滤的文件后缀
myExtension = "*.xls*"
'遍历全路径
myFile = Dir(myPath & myExtension)
'循环处理每一个文件
Do While myFile <> ""
'打开
Set wb = Workbooks.Open(Filename:=myPath & myFile)
'确保工作簿被打开,在处理下一个文件时
DoEvents
'设置背景色
wb.Worksheets(1).Range("A1:Z1").Interior.Color = RGB(51, 98, 174)
'保存工作簿
wb.Close SaveChanges:=True
'确保工作簿被关闭,在处理下一个文件时
DoEvents
'接着处理下一个
myFile = Dir
Loop
'提示处理完成
MsgBox "处理完成!"
ResetSettings:
'恢复设置
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Ⅵ 在vba中使用什么函数可以实现遍历文件夹和文件的需求,并得到指定路径下的文件
可参考截图的代码试试。
vb对文件夹、及文件的访问