[英]Excel VBA- Remove Date in dynamic filename
我是VBA的業余愛好者。
我的目標是使用多個我已經設法實現的文件壓縮文件夾。 但是我需要格式化文件名。
文件夾中的某些文件可能包含日期或者作為文件名的前綴或后綴(例如: ddmmyyyyexpense.xlsx
或expenseddmmyyyy.txt
)。
我想從文件名中刪除日期。
注意:我可以使用任何文件類型
的.xls
.xlsx
.csv
。文本
我嘗試使用附加到字符串之一和VBtextcompare
通配符,但是沒有用。
我喜歡RegExp,所以我會:)
這段代碼尋找一個八位數的數字,測試這是否是一個有效日期,如果是,則將其刪除。
如果您有多個可能的日期,或者8位數字被其他數字包圍,則需要進行細化。
下面的代碼將三個示例字符串提供給清洗功能,它從第一個和第三個剝離日期,而第二個照原樣。
Sub TestDate()
Debug.Print CleanStr("01142012expense.xlsx")
Debug.Print CleanStr("421142012expense.xlsx")
Debug.Print CleanStr("expense16042015.xlsx")
End Sub
碼
Function CleanStr(strIn As String) As String
Dim objRegex As Object
Dim objRegMC As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "(\d{2})(\d{2})(\d{4})"
If .test(strIn) Then
Set objRegMC = .Execute(strIn)
If IsDate(objRegMC(0).submatches(0) & "/" & objRegMC(0).submatches(1) & "/" & objRegMC(0).submatches(2)) Then
CleanStr = .Replace(strIn, vbNullString)
Else
CleanStr = strIn
End If
End If
End With
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.