ERLANDSEN DATA CONSULTING Excel & VBA Tips   Information in English / Informasjon på engelsk

 

Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.

Klikk her for å gå til den oppdaterte informasjonen.

Velg mappenavn

Med hjelp av noen API-funksjoner er det mulig å vise en dialog som lar brukeren velge en mappe:

Private Type BROWSEINFO ' benyttes av funksjonen GetFolderName
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
    Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
    Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Function GetFolderName(Msg As String) As String
' returnerer navnet på en mappe valgt av brukeren
Dim bInfo As BROWSEINFO, path As String, r As Long
Dim X As Long, pos As Integer
    bInfo.pidlRoot = 0& ' Root folder = Desktop
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Velg en mappe" 
        ' the dialog title
    Else
        bInfo.lpszTitle = Msg ' dialogtittelen
    End If
    bInfo.ulFlags = &H1 ' hva slags mappe som skal returneres
    X = SHBrowseForFolder(bInfo) ' vis dialogen
    ' behandle resultatet
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal X, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetFolderName = Left(path, pos - 1)
    Else
        GetFolderName = vbNullString
    End If
End Function


Sub TestGetFolderName()
Dim FolderName As String
    FolderName = GetFolderName("Velg en mappe")
    If Len(FolderName) = 0 Then
        MsgBox "Du valgte ikke en mappe."
    Else
        MsgBox "Du valgte denne mappen: " & FolderName
    End If
End Sub

 

Dokumentet er sist oppdatert 2000-02-04 12:49:08

 

 
Erlandsen Data Consulting     http://www.erlandsendata.no/   
Excel & VBA Tips   Copyright ©1999-2024    Ole P. Erlandsen   All rights reserved
E-post kontaktadresse