gpt4 book ai didi

vba - Excel VBA-删除动态文件名中的日期

转载 作者:行者123 更新时间:2023-12-04 21:03:48 27 4
gpt4 key购买 nike

我是VBA的业余爱好者。

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

文件夹中的某些文件可能包含日期作为文件名的前缀或后缀(例如:ddmmyyyyexpense.xlsxexpenseddmmyyyy.txt)。

我想从文件名中删除日期。

注:我可以有任何文件类型

.xls
.xlsx
.csv
.txt



我尝试使用附加到其中一个字符串的通配符和 VBtextcompare但它没有用。

最佳答案

因为我喜欢正则表达式,所以我会:)

此代码查找一个八位数字,测试这是否是有效日期,如果是则将其删除。

如果您有多个可能的日期,或者如果 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

关于vba - Excel VBA-删除动态文件名中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29698349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com