Avatar billede koppelgaard Praktikant
26. juli 2007 - 16:40 Der er 9 kommentarer og
1 løsning

Metode til at angive path

Med metoden: Filnavn=Application.GetOpenFilename er det muligt at udpege en fil på hardisken.
Findes det samme for et bibliotek ?

Michael
Avatar billede gider_ikke_mere Nybegynder
26. juli 2007 - 16:59 #1
Du kan bruge Dir() til at angive en folder.
Avatar billede gider_ikke_mere Nybegynder
26. juli 2007 - 17:00 #2
Dir Function Example
This example uses the Dir function to check if certain files and directories exist. On the Macintosh, “HD:” is the default drive name and portions of the pathname are separated by colons instead of backslashes. Also, the Microsoft Windows wildcard characters are treated as valid file-name characters on the Mac. However, you can use the MacID function to specify file groups.

Dim MyFile, MyPath, MyName
' Returns "WIN.INI" (on Microsoft Windows) if it exists.
MyFile = Dir("C:\WINDOWS\WIN.INI")   

' Returns filename with specified extension. If more than one *.ini
' file exists, the first file found is returned.
MyFile = Dir("C:\WINDOWS\*.INI")

' Call Dir again without arguments to return the next *.INI file in the
' same directory.
MyFile = Dir

' Return first *.TXT file with a set hidden attribute.
MyFile = Dir("*.TXT", vbHidden)

' Display the names in C:\ that represent directories.
MyPath = "c:\"    ' Set the path.
MyName = Dir(MyPath, vbDirectory)    ' Retrieve the first entry.
Do While MyName <> ""    ' Start the loop.
    ' Ignore the current directory and the encompassing directory.
    If MyName <> "." And MyName <> ".." Then
        ' Use bitwise comparison to make sure MyName is a directory.
        If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
            Debug.Print MyName    ' Display entry only if it
        End If    ' it represents a directory.
    End If
    MyName = Dir    ' Get next entry.
Loop
Avatar billede koppelgaard Praktikant
26. juli 2007 - 19:47 #3
Mange tak for dit svar!
Men jeg vil gerne kunne UDPEJE et bibliotek fra brugerfladen, så en ikke kodekyndig kan vælge et bibliotek.
Dvs:
1) åbne en sti, ligesom når man skal åbne en fil.
2) browse rundt og herefter klikke på et biblioteksnavn
3) få en msgbox op : " du har valg biblioteket c:\....\bibliotek"
Avatar billede gider_ikke_mere Nybegynder
27. juli 2007 - 02:06 #4
Det er noget lignende dette du sikkert skal have fat i:

Sub UseFileDialogOpen()

    Dim lngCount As Long

    ' Open the file dialog
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = True
        .Show

        ' Display paths of each file selected
        For lngCount = 1 To .SelectedItems.Count
            MsgBox .SelectedItems(lngCount)
        Next lngCount

    End With

End Sub

Hvordan man så lige styrer at det er en mappe man vil vælge, ved jeg ikke lige.
Avatar billede koppelgaard Praktikant
27. juli 2007 - 06:25 #5
Her var vi måske en en af VBA's begrænsninger. Det ville der være et oplagt til at kunne gøre, synes du ikke?
Det eneste jeg, nemlig kan komme på, er at bruge:

Function GetImportFileName(explanation As String, FilterIndex) As String


'  Set up list of file filters
    Filt = "Text Files (*.txt),*.txt," & _
          "Lotus Files (*.prn),*.prn," & _
          "Comma Separated Files (*.csv),*.csv," & _
          "ASCII Files (*.asc),*.asc," & _
          "Excel Files (*.xls),*.xls," & _
          "Lotus Files (*.wk1),*.wk1," & _
          "All Files (*.csv),*.csv"
        '  Display *.* by default
   
'  Get the file name
    Filename = Application.GetOpenFilename _
        (FileFilter:=Filt, _
        FilterIndex:=FilterIndex, _
        Title:=explanation)
       

'  Exit if dialog box canceled
    If Filename = False Then
        MsgBox "No file was selected."
        Exit Function
    End If
    GetImportFileName = Filename

End Function

hvorfra men kan få returneret en fil.
Men i stedet for at få smidt filen ud til brugeren så sender man path for filen ud.
Men det kræver et der ER en fil i det bibliotek, som man skal vælge og  at brugeren skal udpege en fil for at få vist et bibliotek. Det er også lidt omvendt -ikke.

Tak for indsatsen - hvis du får en ny ide så meld ENDELIG tilbage.

Michael
Avatar billede koppelgaard Praktikant
27. juli 2007 - 06:29 #6
Mit eksempel og dit gør forresten det samme, ser jeg nu.
Men at udpege en mappe kan vi stadig ikke.
Avatar billede kabbak Professor
27. juli 2007 - 08:05 #7
' ************************ 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 ********************


Public Sub FindPath()
mypath = BrowseFolder("Vælg stien til dine filerne")    ' KALDER STIFINDER PROGRAMMET
MsgBox " du valgte " & mypath
End Sub
Avatar billede koppelgaard Praktikant
27. juli 2007 - 08:58 #8
Der var den - imponerende!!
Sender du et svar kabbak ?

Og tak for din indsats akyhne! Men pointene må gå til kabbak - han havde lige det svar jeg ønskede.
Avatar billede kabbak Professor
27. juli 2007 - 11:57 #9
et svar ;-))
Avatar billede kabbak Professor
19. august 2007 - 00:45 #10
der er også denne

Public Sub minMakro()
Dim MinSti As String
MinSti = UseFileDialogOpen
MsgBox MinSti
End Sub

Function UseFileDialogOpen() As String
' Open the file dialog
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Show
        UseFileDialogOpen = .SelectedItems(1)
    End With
End Function
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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