Avatar billede m0nk3y Nybegynder
03. september 2006 - 18:37 Der er 10 kommentarer og
1 løsning

Åbn mapper med commondialog

Hej Eksperter.

Hvordan får man commondialog til at åbn mapper? Altså så at man kan vælge en mappe inde i commondialog og trykke 'Åbn' og så kan jeg bruge den sti i mit program.

Eller kan det evt. gøres på en anden måde?

Håber i forstår hvad jeg mener - ellers så spørgs endelig!

Med venlig hilsen
Kristian Just Iversen
Avatar billede kabbak Professor
03. september 2006 - 19:03 #1
hvad programmerer du i VB6, VBA eller andet.
Avatar billede m0nk3y Nybegynder
03. september 2006 - 19:05 #2
VB6
Avatar billede kabbak Professor
03. september 2006 - 19:09 #3
Jeg bruger denne i Excel vbam den skal i et modul.


' ************************ STIFINDER PROGRAMMET`S START ********************
Private 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

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
           
Private Const BIF_RETURNONLYFSDIRS = &H1
Public Function BrowseFolder(szDialogTitle As String) As String
  Dim X As Long, bi As BROWSEINFO, dwIList As Long
  Dim szPath As String, wPos As Integer
 
    With bi
        .hOwner = hWndAccessApp
        .lpszTitle = szDialogTitle
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
   
    dwIList = SHBrowseForFolder(bi)
    szPath = Space$(512)
    X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
   
    If X Then
        wPos = InStr(szPath, Chr(0))
        BrowseFolder = Left$(szPath, wPos - 1)
    Else
        BrowseFolder = ""
    End If
End Function
' ************************ STIFINDER PROGRAMMET`S SLUT ********************


Det hele kaldes sådan

Public Sub FindSti()
MinSti = BrowseFolder("Vælg stien til dine filer")
End Sub
Avatar billede m0nk3y Nybegynder
03. september 2006 - 19:12 #4
Vildt. Dette er bedre end hvad jeg søgte!

Smid et svar, du har sandelig fortjent nogen point.
Avatar billede kabbak Professor
03. september 2006 - 19:16 #5
Jeg har lige testet i VB6

dette er koden
som jeg satte i et modul


' ************************ STIFINDER PROGRAMMET`S START ********************
Private 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

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
           
Private Const BIF_RETURNONLYFSDIRS = &H1
Public Function BrowseFolder(szDialogTitle As String) As String
  Dim X As Long, bi As BROWSEINFO, dwIList As Long, hWndAccessApp As Long
  Dim szPath As String, wPos As Integer
 
    With bi
        .hOwner = hWndAccessApp
        .lpszTitle = szDialogTitle
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
   
    dwIList = SHBrowseForFolder(bi)
    szPath = Space$(512)
    X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
   
    If X Then
        wPos = InStr(szPath, Chr(0))
        BrowseFolder = Left$(szPath, wPos - 1)
    Else
        BrowseFolder = ""
    End If
End Function
' ************************ STIFINDER PROGRAMMET`S SLUT ********************

Og denne i formen

Private Sub Command1_Click()
Dim MinSti As String
MinSti = BrowseFolder("Vælg stien til dine filer")
Text1.Text = MinSti
End Sub
Avatar billede m0nk3y Nybegynder
03. september 2006 - 19:20 #6
hvad er forskellen på den nye kode og den gamle? Jeg kan se at du har ændret lidt.
Avatar billede kabbak Professor
03. september 2006 - 19:24 #7
der næsten ingen forskel, men der var en der ikke var dimmet
hWndAccessApp As Long
Avatar billede m0nk3y Nybegynder
03. september 2006 - 19:37 #8
Ok. Men jeg siger i hvert fald mange tak :)
Avatar billede kabbak Professor
03. september 2006 - 20:01 #9
linket til hvor jeg fandt den engang

http://www.cpearson.com/excel/BrowseFolder.htm
Avatar billede kabbak Professor
03. september 2006 - 20:04 #10
hvis du får brug for at finde en bestemt fil, på samme måde, så se http://www.eksperten.dk/spm/729912

jeg har ikke testet den i VB6
Avatar billede m0nk3y Nybegynder
03. september 2006 - 20:11 #11
oki - det er bare herligt! Jeg fortsætter med programmeringen :-)
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
Kurser inden for grundlæggende programmering

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