我有一个名为abcde_SN_179371_15_06_2016_09_28_45__
的文件
我想访问179371
部分和日期(如果它可以在dd/mm/yy
或mm/dd/yy
中获得更好,那么它们之间无关紧要二)
任何人都可以帮助我将这两个变成变量,所以我可以直接粘贴到我的文件中吗?
提前致谢!
答案 0 :(得分:4)
假设文件名存储在名为filnm
的字符串中,而下划线不能构成abcde
或SN
部分的一部分..下面将字符串拆分为由下划线分隔的部分然后为代码fnCode
选择第二个元素(请记住,这些从零开始),并构建第3个,第4个和第5个日期,可用于任何可能的日期计算 - fnDate
。然后它最终创建一个字符串,以防你真正想要一个给定日期格式的字符串 - fnDateStr
。
Dim fnDate As Date
Dim fnCode As String
Dim fnDateStr As String
fileparts = Split(filnm, "_")
fnCode = fileparts(2)
fnDate = DateSerial(fileparts(5), fileparts(4), fileparts(3))
fnDateStr = Format(fnDate, "mm/dd/yy")
Debug.Print fnCode, fnDate, fnDateStr
答案 1 :(得分:0)
你走了:
Sub Extract()
Dim val1, val2, val3 As String
val1 = "abcde_SN_179371_15_06_2016_09_28_45__"
val2 = Right(val1, Len(val1) - InStr(val1, "_"))
val2 = Right(val2, Len(val2) - InStr(val2, "_"))
val3 = Right(val2, Len(val2) - InStr(val2, "_"))
val2 = Left(val2, InStr(val2, "_") - 1) 'SerialNumber
val3 = Replace(Left(val3, 10), "_", "/") 'Date
MsgBox val2 & " " & val3
End Sub
答案 2 :(得分:0)
试试这个
Sub Test()
'Gets first section
ValuetoSplit = Range("A1").Value 'Assumed location of file name string
SplitFrom = InStr(InStr(ValuetoSplit, "_") + 1, ValuetoSplit, "_") + 1
Value = Mid(ValuetoSplit, SplitFrom, 6)
'Gets date
NextSplit = InStr(SplitFrom + 1, ValuetoSplit, "_") + 1
FileDate = Mid(ValuetoSplit, NextSplit, 10)
'Changes underscores to slashes to create date
FileDate = Replace(FileDate, "_", "/")
ValueAsDate = Format(FileDate, "dd/mm/yy")
MsgBox Value & " " & ValueAsDate
End Sub