Avatar billede tipsen Nybegynder
29. april 2002 - 17:48 Der er 5 kommentarer og
1 løsning

Lad bruger vælge mappe i VBA/Excel2000

Hej Eksperter

Er det muligt at lave en dialogboks, hvor brugeren har mulighed for at vælge en mappe, som returneres til en variabel. (Det skal bruges til at angive, hvor en fil skal gemmes!)

Måske en slags variant af:

Application.Dialogs(xlDialogOpen).show
Application.GetOpenFilename

...?
Avatar billede bak Forsker
29. april 2002 - 18:13 #1
Application.GetSaveAsFilename giver hele stien hvor brugeren vil gemme, men den gemmer ikke. (dette kan man gøre senere, men jeg går oogså ud fra at det er det du vil.)
Jeg har derefter pillet stien og filnavnet fra hinanden

Sub tester()
x = Application.GetSaveAsFilename
sti = Left(x, InStrRev(x, "\") - 1)
filnavn = Mid(x, InStrRev(x, "\") + 1, Len(x))
MsgBox sti & "    " & filnavn
End Sub
Avatar billede tipsen Nybegynder
29. april 2002 - 18:19 #2
bak: Med den løsning bliver det nødvendigt, at angive et filnavn - det er ikke hvad jeg ønsker!

Man skal kun vælge en folder og derefter trykke ok!
Avatar billede bak Forsker
29. april 2002 - 19:49 #3
Tipsen > Så har du givet point på forkert grundlag. Vil du ha' dem tilbage igen ??  :-)
29. april 2002 - 19:55 #4
Så vidt jeg ved, så skal du igang med at lave et klassemodul!!! Så vidt jeg ved findes der et der hedder CFileDialog, måske du kan finde det på nettet.
Avatar billede Slettet bruger
29. april 2002 - 21:08 #5
Prøv dette:
Følgende kode skal indsætte i et modul

----------------------------------------

Option Explicit
Public Type BROWSEINFO
    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

'32-bit API declarations
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
  Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long

Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Function GetDirectory(Optional Msg) As String
    Dim bInfo As BROWSEINFO
    Dim path As String
    Dim r As Long, x As Long, pos As Integer

'  Root folder = Desktop
    bInfo.pidlRoot = 0&

'  Title in the dialog
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Select a folder."
    Else
        bInfo.lpszTitle = Msg
    End If
   
'  Type of directory to return
    bInfo.ulFlags = &H1

'  Display the dialog
    x = SHBrowseForFolder(bInfo)
   
'  Parse the result
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal x, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetDirectory = Left(path, pos - 1)
    Else
        GetDirectory = ""
    End If
End Function

'Using the function
'The simple subroutine listed below demonstrates how to use the GetDirectory function in your code. Executing this subroutine displays the dialog box. When the user clicks OK or Cancel, the MsgBox function displays the full path of the selected directory.


Public Sub Test()
    MsgBox GetDirectory
End Sub

------------------------------------

Du kan køre proceduren Test() for at checke resultatet.
Håber det hjælper.
Avatar billede tipsen Nybegynder
30. april 2002 - 09:42 #6
bak: Du fik pointene fordi det endte med jeg lavede lidt om på koden og brugte dit forslag alligevel! (havde bare lidt travlt i går!)

blackadder: Jeg siger tak for hjælpen - løsningsforslaget er dog lidt for omfattende i forhold til problemstillingen, men det kan være jeg kan bruge den en anden god gang!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB