Return 未知字符数的正确函数

Right Function to Return an Unknown Number of Characters for a sting

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

字符串示例:

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

我想用 Right 函数拉回 "FileExtension" 一块,它可以是无限多的字母、字符和数字。

只需使用 InStrRev()Mid()

InStrRev() 可让您在字符串中搜索子字符串,但 In Reverse 和 returns 这是起始位置。我们可以将它与 Mid() 函数结合起来,告诉 VBA 我们要从哪里开始抓取文本:

Sub SO()

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

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

End Sub

将获取最后一个“\”之后的所有内容,这就是您最初的问题所暗示的内容。

您正在寻找

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

,如果 FileExtension 前面有一个 . 句点。

此处给出的答案可能在有限的情况下有效,但肯定不是解决问题的最佳方法。不要重新发明轮子。 File System Object in the Microsoft Scripting Runtime library already has a method to do exactly this. It's called GetExtensionName

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