我有一些代码会重命名文件名并重命名文件中的选项卡名称,但是为了使我的代码能够工作,我的文件名必须是静态的。
我遇到的问题是我的文件通常会在文件名末尾添加日期或周数,有人可以帮我修改我的代码,以便它使用通配符或者在前两个之后忽略任何东西或三个文件名并运行我的代码?
例如,我得到了一个名为Incident Report Week 43.xlsx的文件,所以要使我的代码工作,我必须手动将文件重命名为Incident Report.xlsx,有没有办法可以让它忽略'周43'或报告后的任何内容,同一文件有时也称为事件报告20150424.xlsx
这是我到目前为止所拥有的
'launch Excel and open file
Const xlExcel8 = 56
Const xlOpenXMLWorkbook = 51
Set xlObj = CreateObject("Excel.Application")
Set xlFile = xlObj.WorkBooks.Open("C:\Users\_ThisWeek\Incident Report.xlsx")
'turn off screen alerts
xlObj.Application.DisplayAlerts = FALSE
'loop through sheets
For Each Worksheet In xlFile.Worksheets
'change sheet to desired worksheet name
If Worksheet.Name = "Weekly Report" Then
Worksheet.Name = "Sheet1"
End If
Next
xlfile.SaveAs "C:\Users\_ThisWeek\Incident Report.xls", xlExcel8
xlFile.Close True
xlObj.Quit
Ansgar提交的作品,经过测试,谢谢先生
答案 0 :(得分:1)
添加外部循环以迭代源目录中的所有文件,并仅打开扩展名为.xlsx
且名称以Incident Report
开头的文件。
Set fso = CreateObject("Scripting.FileSystemObject")
Set xlObj = CreateObject("Excel.Application")
Set re = New RegExp
re.Pattern = "^incident report.*\.xlsx$"
re.IgnoreCase = True
For Each f In fso.GetFolder("C:\Users\_ThisWeek").Files
If re.Test(f.Name) Then
Set xlFile = xlObj.WorkBooks.Open(f.Path)
...
xlFile.Close True
End If
Next