重命名有日期的文件

时间:2015-04-28 09:26:45

标签: excel vbscript

我有一些代码会重命名文件名并重命名文件中的选项卡名称,但是为了使我的代码能够工作,我的文件名必须是静态的。

我遇到的问题是我的文件通常会在文件名末尾添加日期或周数,有人可以帮我修改我的代码,以便它使用通配符或者在前两个之后忽略任何东西或三个文件名并运行我的代码?

例如,我得到了一个名为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提交的作品,经过测试,谢谢先生

1 个答案:

答案 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