我是VBA的业余爱好者。
我的目标是使用多个我设法实现的文件压缩该文件夹。但是我需要格式化文件名。
文件夹中的某些文件可能包含日期作为文件名的前缀或后缀(例如:ddmmyyyyexpense.xlsx
或expenseddmmyyyy.txt
)。
我想从文件名中删除日期。
注意:我可以有任何文件类型
.xls
.xlsx
.csv
.txt
我尝试使用通配符追加到一个字符串中,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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句