簡體   English   中英

Excel VBA-在動態文件名中刪除日期

[英]Excel VBA- Remove Date in dynamic filename

我是VBA的業余愛好者。

我的目標是使用多個我已經設法實現的文件壓縮文件夾。 但是我需要格式化文件名。

文件夾中的某些文件可能包含日期或者作為文件名的前綴或后綴(例如: ddmmyyyyexpense.xlsxexpenseddmmyyyy.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM