29. april 2002 - 17:48Der 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!)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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
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.
Synes godt om
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.
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!
Synes godt om
Ny brugerNybegynder
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.