我是VBA的业余爱好者。
我的目标是使用我设法实现的多个文件压缩文件夹。但我需要格式化文件名。
文件夹中的某些文件可能包含日期作为文件名的前缀或后缀(例如:ddmmyyyyexpense.xlsx
或expenseddmmyyyy.txt
)。
我想从文件名中删除日期。
注意:我可以使用任何文件类型
的.xls
.XLSX
的.csv
.TXT
我尝试使用附加到其中一个字符串的通配符
VBtextcompare
但它没有用。
答案 0 :(得分:0)
因为我喜欢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