我想使用以下代码从我以前打开的每日文件名中提取日期。我将每天打开的文件格式是相同的格式,只是日期会更改以反映生成文件的日期。如何用VBA编写以在我打开的最新文件中提取日期,然后粘贴到文件中的“ A2”单元格中?
例如,下面的代码将基于最新的修改日期打开最新的csv文件,其文件名为“ CCONTACT_Daily_WIP_CCONTACTCase_20200805_0203.csv”。我只想从打开的文件名中提取日期“ 20200805”。文件名始终相同,只是日期会更改。如何提取日期并将其粘贴到单元格中?
Dim MyPathWIP As String
Dim MyFileWIP As String
Dim LatestFileWIP As String
Dim LatestDateWIP As Date
Dim LMDWIP As Date
Dim wip1 As Excel.Workbook
'Open latest file from WIP folder
MyPathWIP = "D:\Regina\Case360 reporting automation\Daily Report WIP Testing\"
If Right(MyPathWIP, 1) <> "\" Then MyPathWIP = MyPathWIP & "\"
MyFileWIP = Dir(MyPathWIP & "*.csv", vbNormal)
If Len(MyFileWIP) = 0 Then
MsgBox "No files were found...", vbExclamation
Exit Sub
End If
Do While Len(MyFileWIP) > 0
LMDWIP = FileDateTime(MyPathWIP & MyFileWIP)
If LMDWIP > LatestDateWIP Then
LatestFileWIP = MyFileWIP
LatestDateWIP = LMDWIP
End If
MyFileWIP = Dir
Loop
Set wip1 = Workbooks.Open(MyPathWIP & LatestFileWIP)
答案 0 :(得分:0)
请使用下一个功能:
Function FindDate(strFileName As String) As String
If UBound(Split(strFileName, "_")) > 4 Then
FindDate = Split(strFileName, "_")(4)
End If
End Function
您可以使用以下方法进行测试:
Sub testFindDate()
Dim fileName As String
fileName = "CCONTACT_Daily_WIP_CCONTACTCase_20200805_0203.csv"
MsgBox FindDate(fileName)
End Sub
答案 1 :(得分:0)
您可以尝试:
Sub Macro1()
Dim str As String
Dim arr As Variant
str = "CCONTACT_Daily_WIP_CCONTACTCase_20200805_0203.csv"
arr = Split(str, "_")
MsgBox (arr(4))
End Sub
答案 2 :(得分:0)
有多种解决方法。在其他答案中已经显示了基于下划线的字符串拆分,因此,让我向您展示如何使用固定字符串方法进行操作:
str_filename = "CCONTACT_Daily_WIP_CCONTACTCase_20200805_0203.csv"
str_Date = Mid(str_filename,Len("CCONTACT_Daily_WIP_CCONTACTCase_")+1,Len("YYYYMMDD"))
这是什么意思?
文件名具有以下格式:
CCONTACT_Daily_WIP_CCONTACTCase_YYYYMMDD_...
位置:
CCONTACT_Daily_WIP_CCONTACTCase_
是一个修复字符串,在您要查找的字符串之前YYYYMMDD
是日期格式(年份为四个字符,月份为两个字符,日期为两个字符)提取(通过Mid()
函数获取子字符串)是通过以下方式完成的: