获取文件扩展名vba [重复]

问题描述 投票:0回答:2

我需要将文件的扩展名存储在 VBA 的变量中, 我现在所做的是

file= Hello.pdf
extension = split(file,".")(1)

但有时我的文件可能会像

file = 1.Filename.pdf
所以我的扩展变量不再起作用......

有人可以帮助我找到一个解决方案,始终从任何文件名中获取扩展名,即使它们是多个“.”在里面。

我有一个想法,那就是从右向左读取,并在读取“.”时获取字符串。 但我是 VBA 新手,不知道从哪里开始......

vba get
2个回答
6
投票

尝试一下,

Dim vFn As Variant

file = "Hello.pdf"

vFn = Split(file, ".")
extension = vFn(UBound(vFn))

Function FileExt(Optional str = "1.2.3.4.5.dd")
    FileExt= Right(str, Len(str) - InStrRev(str, "\"))
End Function

4
投票

试试这个

Sub Get_Extension()
    Dim fso As Object, sFile As String
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    sFile = "Hello.pdf"
    
    Debug.Print Right(sFile, Len(sFile) - InStrRev(sFile, "."))
    Debug.Print fso.GetExtensionName(sFile)
    Debug.Print Split(sFile, ".")(UBound(Split(sFile, ".")))
End Sub

要获取文件名,您可以使用它

Sub Get_Filename()
    Dim v, fso As Object, sFile As String
    Set fso = CreateObject("Scripting.FileSystemObject")
    sFile = "1.Hello.pdf"
    v = Split(sFile, ".")
    ReDim Preserve v(0 To UBound(v) - 1)
    Debug.Print Join(v, ".")
    Debug.Print fso.GetBaseName(sFile)
    Debug.Print Left(sFile, (InStrRev(sFile, ".", -1, vbTextCompare) - 1))
    Debug.Print Left(sFile, InStrRev(sFile, ".") - 1)
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.