正确的函数返回一个sting的未知字符数

时间:2015-01-19 14:05:33

标签: vba ms-access access-vba

如果我的Access数据库使用一串信息将文件保存到特定位置。在字符串的末尾,每个字符串总是有一个相关的文件扩展名。我需要能够从字符串中提取此信息以将其存储为表字段。

字符串示例:

\\Server\MainFolder\Location\2\LastFolder\02-1234-LastName-20150119_080718FileExtension

我想使用Right函数来拉回“FileExtension”片段,它可能是无数个字母,字符和数字。

3 个答案:

答案 0 :(得分:2)

这里给出的答案可能在有限的情况下有效,但肯定不是最好的方法。不要重新发明轮子。 File System Object中的Microsoft Scripting Runtime library已经有了完成此操作的方法。它被称为GetExtensionName

Function GetAnExtension(fullFilePath As String) As String
   Dim fso
   Set fso = CreateObject("Scripting.FileSystemObject")
   GetAnExtension = fso.GetExtensionName(fullFilePath)
End Function

答案 1 :(得分:0)

只需使用InStrRev()Mid()

即可

InStrRev()可让您搜索字符串中的子字符串,但 In Rev erse并返回其起始位置。我们可以将它与Mid()函数结合起来告诉VBA我们要从哪里开始抓取文本:

Sub SO()

x$ = "\Server\MainFolder\Location\2\LastFolder\02-1234-LastName-20150119_080718FileExtension"

fileExt$ = Mid(x, InStrRev(x, "\") + 1) 'fileExt now holds information you need

End Sub

会在最后的“\”之后抓住所有内容,这是你最初提出的问题所暗示的。

答案 2 :(得分:0)

您正在寻找

yourPath = "\Server\MainFolder\Location\2\LastFolder\02-1234-LastName-20150119_080718.FileExtension"
whatYouNeed = Mid(yourPath, InStrRev(yourPath, ".") + 1)

,如果FileExtension前面有.个句号。