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 Systemusing 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)
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)