vba 遍历指定文件夹(含子目录)获取文件名,哪种方法速度最快?

vba 遍历指定文件夹(含子目录)获取文件名,哪种方法速度最快?,第1张

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

using System

using System.Collections.Generic

using System.Linq

using System.Text

using System.IO

namespace 遍历文件皮正夹和子文件夹铅迹

{

class Program

{

private static FileStream fs

private static StreamWriter sw

static void Main(string[] args)

{

string path

int leval=0

Console.WriteLine("请输入需要列出内容的文件夹的完整路径和文件名:")

path=Console.ReadLine()

path.Replace('\\','/')

fs = new FileStream("result.txt", FileMode.Create)

sw = new StreamWriter(fs)

//开始写入文件

sw.WriteLine("遍历结果如下:")

sw.WriteLine(path)

listDirectory(path,leval)

//清空缓冲区

sw.Flush()

//关闭流

sw.Close()

fs.Close()

Console.WriteLine("请按任意键继续……")

Console.ReadKey()

}

/// <summary>

/燃激悔// 列出path路径对应的文件夹中的子文件夹和文件

/// 然后再递归列出子文件夹内的文件和文件夹

/// </summary>

/// <param name="path">需要列出内容的文件夹的路径</param>

/// <param name="leval">当前递归层级,用于控制输出前导空格的数量</param>

private static void listDirectory(string path,int leval)

{

DirectoryInfo theFolder = new DirectoryInfo(@path)

leval++

//遍历文件

foreach (FileInfo NextFile in theFolder.GetFiles())

{

for (int i = 0i <levali++) sw.Write('\t')

sw.Write("-->")

sw.WriteLine(NextFile.Name)

}

//遍历文件夹

foreach (DirectoryInfo NextFolder in theFolder.GetDirectories())

{

for (int i = 0i <levali++) sw.Write('\t')

sw.Write("--)")

sw.WriteLine(NextFolder.Name)

listDirectory(NextFolder.FullName, leval)

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12153052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存