Jak z nazwy pliku wyciągnąć rozszerzenie

przez | 2024-09-15

Czasami w zmiennej mamy nazwę pliku (np. plik.txt, bądź możemy mieć też podaną pełną ścieżkę wraz z nazwą pliku np. c:\katalog\podkatalog\plik.txt). I chcemy z tej nazwy pliku wyciągnąć samo rozszerzenie (np. txt). Bo np. w zależności od tego czy użytkownik wskazał plik tekstowy a graficzny nasze makro ma wykonać inną operację.

Jak najprościej sprawdzić jakie rozszerzenie ma nasz plik?

Najprościej jest wyciągnąć cały tekst po ostatnim znaku . (kropki)

Funkcja InStrRev podaje pozycję ostatniego wystąpienia wskazanego podciągu w ciągu znaków. Jeśli funkcja zwróci wartość 0 to znaczy, że w nazwie pliku nie było ani jednego znaku . czyli zmienna z nazwą pliku albo jest pusta albo zawiera nazwę pliku bez rozszerzenia (np. w folderze C:\Windows\System32\drivers\etc mamy plik hosts). Jeśli funkcja ta zwróci wartość wyższą od 0 to za pomocą funkcji Mid należy wyciągnąć wszystkie znaki od wartości zwróconej przez tę funkcję powiększoną o 1 do końca. Jeśli będziemy w naszym kodzie używać instrukcji select case do wykonania odpowiedniej czynności z zależności od uzyskanego rozszerzenia warto jest dodatkowo użyć funkcji lcase, która w ciągu tekstowym zamienia wszystkie litery na małe. Oto przykładowy kod:

Function PobierzRozszerzeniePliku(Plik As String) As String
    Dim Ret As String
    Dim pos As Long
    
    pos = InStrRev(Plik, ".")
    If pos = 0 Then
        Ret = ""
    Else
        Ret = Mid(Plik, pos + 1)
    End If
    
    PobierzRozszerzeniePliku = LCase(Ret)
End Function

Sub TestPobierzRozszerzeniePliku()
    Dim Plik As String
    Dim Rozszerzenie As String
    Plik = "c:\katalog\podkatalog\plik.TXT"
    
    Rozszerzenie = PobierzRozszerzeniePliku(Plik)
    
    MsgBox Rozszerzenie, vbInformation
End Sub

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.