在运行宏文件时协助获取文件名

时间:2017-05-22 08:30:50

标签: vba excel-vba excel

我有一个名为abcde_SN_179371_15_06_2016_09_28_45__的文件 我想访问179371部分和日期(如果它可以在dd/mm/yymm/dd/yy中获得更好,那么它们之间无关紧要二)

任何人都可以帮助我将这两个变成变量,所以我可以直接粘贴到我的文件中吗?

提前致谢!

3 个答案:

答案 0 :(得分:4)

假设文件名存储在名为filnm的字符串中,而下划线不能构成abcdeSN部分的一部分..下面将字符串拆分为由下划线分隔的部分然后为代码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