Funktioner för filnamn, sökväg och filändelse

Här i detta tips visas hur vi kan skapa funktioner för att extrahera filnamn, sökväg och filändelse från en textsträng såsom 'c:\XLDennis\Data.xls'.

Nedanstående funktioner kan användas i version 2000 och framåt.

Option Explicit

 Function HamtaFilnamn(Filnamn As String) As String

   '© 2002 Alla rättigheter XL-Dennis

   Dim i As Long

   i = InStrRev(Filnamn, "\")

   HamtaFilnamn = Mid(Filnamn, i + 1)

End Function

 

Function HamtaFilandelse(Filnamn As String) As String

   '© 2002 Alla rättigheter XL-Dennis

   Dim i As Long

   i = InStrRev(Filnamn, ".")

   HamtaFilandelse = Mid(Filnamn, i + 1)

End Function

Function HamtaSokvag(Filnamn As String) As String

   '© 2002 Alla rättigheter XL-Dennis

   Dim i As Long

   i = InStrRev(Filnamn, "\")

   HamtaSokvag = Mid(Filnamn, 1, i - 1)

End Function


Nedanstående funktioner kan användas i version 97 och framåt.

Function HamtaFilnamn97(Filnamn As String) As String

   '© 2002 Alla rättigheter XL-Dennis

   Dim stTecken As String

   Dim i As Long

 

   For i = Len(Filnamn) To 1 Step -1

      stTecken = Mid(Filnamn, i, 1)

      If stTecken = "\" Then

         HamtaFilnamn97 = Mid(Filnamn, i + 1)

         Exit For

      End If

   Next i

End Function

 

Function HamtaFilandelse97(Filnamn As String) As String

   '© 2002 Alla rättigheter XL-Dennis

   Dim stTecken As String

   Dim i As Long

 

   For i = Len(Filnamn) To 1 Step -1

      stTecken = Mid(Filnamn, i, 1)

      If stTecken = "." Then

         HamtaFilandelse97 = Mid(Filnamn, i + 1)

         Exit For

      End If

   Next i

End Function
 

Function HamtaSokvag97(Filnamn As String) As String

   '© 2002 Alla rättigheter XL-Dennis

   Dim stTecken As String

   Dim i As Long

 

   For i = Len(Filnamn) To 1 Step -1

      stTecken = Mid(Filnamn, i, 1)

      If stTecken = "\" Then

         HamtaSokvag97 = Mid(Filnamn, 1, i - 1)

         Exit For

      End If

   Next i

End Function

 

För att få fram sökvägen till Temp-mappen på en dator kan vi användas oss av Windows API på följande sätt:

Public Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _

      (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

 

Function SokvagTempMapp()

   '© 2002 Alla rättigheter XL-Dennis

   Dim stSokvag As String * 255, lnSokvag As Long

 

   lnSokvag = GetTempPath(255, stSokvag)

   SokvagTempMapp = Mid(stSokvag, 1, lnSokvag)

End Function

 

Ännu enklare är att användas oss av Environ-funktionen:

Sub SokVagTemp()

   MsgBox Environ("TEMP")

End Sub