首页 文章

重命名有日期的文件

提问于
浏览
2

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

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

例如,我得到一个名为Incident Report Week 43.xlsx的文件,所以为了使我的代码工作,我必须手动将文件重命名为Incident Report.xlsx,有没有办法可以让它忽略'第43周'或之后的任何内容 . 单词Report,同一个文件有时也称为Incident Report 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

安斯加提交的作品,经过测试,谢谢先生

1 回答

  • 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
    

相关问题