Excel VBA-删除dynamic文件名中的date

我是业余的VBA。

我的目标是压缩文件夹,我已经设法实现了多个文件。 但是我需要格式化文件名。

文件夹中的某些文件可能包含date,作为文件名的前缀或后缀(例如: ddmmyyyyexpense.xlsxddmmyyyyexpense.xlsx )。

我想从文件名中删除date。

注意:我可以有任何文件types

的.xls
.XLSX
的.csv
。文本

我试图使用通配符附加到其中一个string和VBtextcompare但它没有工作。

因为我喜欢RegExp我会:)

这个代码查找一个八位数字,testing这是否是一个有效的date,如果是的话删除它。

如果您有多个可能的date,或者如果8位数字被其他数字包围,则需要精炼。

下面的代码将三个样本string提供给清理函数,它从第一个和第三个date中删除date,第二个保留原样。

 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