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