Gå til innhold

Change directory dialog browser


Anbefalte innlegg

Kan noen forklare meg hvordan jeg kan lage en change directory dialog browser i VBA? Den skal begynne i en gitt katalog i strukturen, men skal kunne gi tilgang på hele datamaskinen og evt nettverket. Også over der den begynte.

 

Bruker en løsning nå som alltid begynner på skrivebordet hver gang. Litt tungvint å bla seg frem til gitt katalog. Bruker SHGetPathFromIDList i shell32.dll biblioteket. Ønsker minst mulig add-ins og ekstra biblioteker.

Lenke til kommentar
Videoannonse
Annonse

Jeg er redd det vil kreve svært mye arbeid å få dette implementert med den gjeldende løsningen du benytter. Du kan riktignok endre toppmappen med SHBrowseForFolder-APIet, men dette vil forhindre tilgang til de øvrige mappene.

 

Kanskje du kommer bedre ut av å endre brukergrensesnittet en smule, eller lage en egen form for akkurat dette?

Lenke til kommentar

Jeg hadde litt tid til over, så jeg snekret sammen en klassekontroll og en modul som, via SHBrowseForFolder-APIet, kan definere oppstartsmappen. Det var visst ikke like komplekst som jeg hadde forventet.

 

Bruken av denne klassemodulen burde være temmelig innlysende. Legg filene inn via File -> Import File, og klassen vil bli tilgjengelig således:

 

Dim objBrowse As New clsFolderBrowse

 

' Sett oppstartslokasjonen

objBrowse.StartLocation = SL_NETWORK

 

' Vår informasjonstekst i dialogboksen

objBrowse.Description = "Velg en mappe"

 

' Vis URL'er

objBrowse.Flags = BIF_BROWSEINCLUDEURLS

 

' Vis dialogboksen

If objBrowse.Browse = Browse_OK Then

 

    ' Vis returnert sti

    MsgBox objBrowse.ResultPath

 

End If

BrowseClass.zip

Endret av aadnk
Lenke til kommentar

Har du prøvd det? Det funker nemlig ikke. objBrowse.StartPath vil bare godta en av de angitte variablene:

 

SL_FLAG_CREATE = &H8000

SL_FLAG_DONT_VERIFY = &H4000

SL_ADMINTOOLS = &H30

SL_ALTSTARTUP = &H1D

SL_APPDATA = &H1A

SL_BITBUCKET = &HA

SL_COMMON_ADMINTOOLS = &H2F

SL_COMMON_ALTSTARTUP = &H1D

SL_COMMON_APPDATA = &H23

SL_COMMON_DESKTOPDIRECTORY = &H19

SL_COMMON_DOCUMENTS = &H2E

SL_COMMON_FAVORITES = &H1F

SL_COMMON_PROGRAMS = &H17

SL_COMMON_STARTMENU = &H16

SL_COMMON_STARTUP = &H18

SL_COMMON_TEMPLATES = &H2D

SL_CONTROLS = &H3

SL_COOKIES = &H21

SL_DESKTOP = &H0

SL_DESKTOPDIRECTORY = &H10

SL_DRIVES = &H11

SL_FAVORITES = &H6

SL_FONTS = &H14

SL_HISTORY = &H22

SL_INTERNET = &H1

SL_INTERNET_CACHE = &H20

SL_LOCAL_APPDATA = &H1C

SL_MYPICTURES = &H27

SL_NETHOOD = &H13

SL_NETWORK = &H12

SL_PERSONAL = &H5

SL_PRINTERS = &H4

SL_PRINTHOOD = &H1B

SL_PROFILE = &H28

SL_PROGRAM_FILES = &H26

SL_PROGRAM_FILES_COMMON = &H2B

SL_PROGRAM_FILES_COMMONX86 = &H2C

SL_PROGRAM_FILESX86 = &H2A

SL_PROGRAMS = &H2

SL_RECENT = &H8

SL_SENDTO = &H9

SL_STARTMENU = &HB

SL_STARTUP = &H7

SL_SYSTEM = &H25

SL_SYSTEMX86 = &H29

SL_TEMPLATES = &H15

SL_WINDOWS = &H24

SL_CUSTOME = &HFFFF

Lenke til kommentar

Å, beklager. Du må ha fått en eldre versjon av koden. I den eldste versjonen må du nemlig sette RootLocation til SL_CUSTOME før du kan bruke RootPath - i den nyeste behøver du simpelthen sette RootPath før det vil fungere.

 

Jeg har lastet opp den nyeste utgaven i posten ovenfor.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...