Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在运行宏文件时协助获取文件名_Vba_Excel - Fatal编程技术网

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

Vba 在运行宏文件时协助获取文件名,vba,excel,Vba,Excel,我有一个文件名为:abcde_SN_179371_15_06_2016_09_28_45_ 我想访问179371部分和日期(如果有可能在dd/mm/yy或mm/dd/yy中获取,则更好,两者之间无所谓) 有谁能帮我把这两个变量转换成变量,这样我就可以直接粘贴到我的文件上了 提前谢谢 给你: Sub Extract() Dim val1, val2, val3 As String val1 = "abcde_SN_179371_15_06_2016_09_28_45__" val2 = Right

我有一个文件名为:
abcde_SN_179371_15_06_2016_09_28_45_
我想访问
179371
部分和日期(如果有可能在
dd/mm/yy
mm/dd/yy
中获取,则更好,两者之间无所谓)

有谁能帮我把这两个变量转换成变量,这样我就可以直接粘贴到我的文件上了

提前谢谢

给你:

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
给你:

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
试试这个

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
试试这个

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

假设文件名存储在名为
filnm
的字符串中,下划线不能构成
abcde
SN
部分的一部分。。下面将字符串拆分为以下划线分隔的部分,然后为代码
fnCode
选择第二个元素(请记住,这些元素从零开始),并从第三、第四和第五个元素构建一个日期,该日期可用于您可能进行的任何日期计算-
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

假设文件名存储在名为
filnm
的字符串中,下划线不能构成
abcde
SN
部分的一部分。。下面将字符串拆分为以下划线分隔的部分,然后为代码
fnCode
选择第二个元素(请记住,这些元素从零开始),并从第三、第四和第五个元素构建一个日期,该日期可用于您可能进行的任何日期计算-
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

除非您详细解释文件名的结构(例如,作为“abcde”的部分是否始终为5个字符,或者是否全部为下划线字符),否则我们建议您最好只硬编码这些值。(我猜你可以
拆分(你的字符串,“”)
,然后使用各种组件,但这取决于“abcde”部分本身是否可以包含下划线等)。它总是相同的“abcde”格式,5个字母,然后是一个下划线。当我使用Split(yourstring,“\”)时,该命令的作用是什么?我要用什么来代替“yourstring”吗?哦,我想我是从下面的评论中得到的,谢谢!除非您详细解释文件名的结构(例如,作为“abcde”的部分是否始终为5个字符,或者是否全部为下划线字符),否则我们建议您最好只硬编码这些值。(我猜你可以
拆分(你的字符串,“”)
,然后使用各种组件,但这取决于“abcde”部分本身是否可以包含下划线等)。它总是相同的“abcde”格式,5个字母,然后是一个下划线。当我使用Split(yourstring,“\”)时,该命令的作用是什么?我要用什么来代替“yourstring”吗?哦,我想我是从下面的评论中得到的,谢谢!仅出于您的兴趣:
Dim val1、val2、val3作为字符串
仅将第三个变量声明为
String
。前两个仍然是
变体
。这与将
Dim val1作为Variant,val2作为Variant,val3作为String
完全相同,但您可能指的是
Dim val1作为String,val2作为String,val3作为String
我实际上不知道这一点。但vba的特殊之处在于此。它将在vb.net中工作。是的,这是VBA的特殊之处,这就是我提到它的原因。在许多情况下,VB.NET与VBA非常不同。仅出于您的兴趣:
Dim val1、val2、val3作为字符串
仅将第三个变量声明为
String
。前两个仍然是
变体
。这与将
Dim val1作为Variant,val2作为Variant,val3作为String
完全相同,但您可能指的是
Dim val1作为String,val2作为String,val3作为String
我实际上不知道这一点。但vba的特殊之处在于此。它将在vb.net中工作。是的,这是VBA的特殊之处,这就是我提到它的原因。在许多情况下,VB.NET与VBA非常不同。