FilePicker.InitialFileName

Status
Niet open voor verdere reacties.

test1000

Gebruiker
Lid geworden
7 jul 2017
Berichten
258
Hoi,

Ivm FilePicker lukt het mij om een folder te openen wanneer je de volledige path ingeeft.

Dim Folder as string
Folder = C:\ACCES\
FilePicker.InitialFileName = Folder


Mijn vraag is :
Onder een bepaalde folder zijn er verschillende subfolders die beginnen met een unieknummer en dan nog een omschrijving.
Het unieknummer heb ik maar niet de omschrijving. Dus ik wil de folder zo instellen dat het unieknummer + *.* gebruikt kan worden.

Vb Folders

C:\ACCESS\100 JFDKL FDF\
C:\ACCESS\101 DJUFJ UFJF\
C:\ACCESS\102 PDOJK FIFK\

Je selecteert eerst een item. Zo ken je het unieknummer vb 100 of 101 of 102.
En dan verschijnt de knop [Folder]. Als je dan op deze knop klikt zou de folder moeten open gaan afhankelijk van het unieknummer.
(je kan het vergelijken met A*.*. Alle bestanden beginnend met A laten zien.

Is het mogelijk om met *.* te werken om een folder te openen bij FilePicker.InitialFileName ?

Alvast bedankt.
 
Laatst bewerkt:
Voor folders volgens mij niet, maar je zou eens wat kunnen stoeien met FilePicker.Filters.Add
 
Het is allemaal niet zo moeilijk als je eerst de volledige mapnaam matcht met de waarden uit je keuzelijst. Ik heb je db niet, dus ik heb de keuzelijst even vervangen door een Inputbox. Dat kun je waarschijnlijk zelf wel aanpassen.

Code:
Function DeelMapLezen()
Dim strFilename As String
Dim strPath As String, myName As String, Map As String
Dim Mappen() As String, Bestanden() As String
Dim x As Integer

Const StartPad As String = "H:\Temp\"
    
    Map = InputBox("Typ het getal", "Start ingeven", 100)
    myName = Dir(StartPad, vbDirectory)     ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        If myName <> "." And myName <> ".." Then
            If (GetAttr(StartPad & myName) And vbDirectory) = vbDirectory Then
                If Left(myName, Len(Map)) = Map Then
                    Map = myName
                    Exit Do
                End If
            End If
        End If
        myName = Dir
    Loop
    myName = Dir(StartPad & Map & "\*.*")    ' Retrieve the first entry.
    Do While myName <> ""    ' Start the loop.
        ReDim Preserve Bestanden(x)
        Bestanden(x) = myName
        myName = Dir
        x = x + 1
    Loop
    For x = LBound(Bestanden) To UBound(Bestanden)
        MsgBox Bestanden(x)
    Next x

End Function
 
Dag OctaFish,

Uw code leest de bestanden wat ook geweldig kan zijn.
Maar is niet wat ik eigenlijk zoek.

Wat ik zoek is zoals de FilePicker dan opent er zich een popup scherm en kan je in de folder een bestand uitkiezen om te openen.
Als de bestanden die ik wil openen zouden staan onder folder c:\access\ dan werkt het.
Het probleem is dat je eerst een keuzelijst krijgt. Je kiest een item.
En aan dit item is een folder gekoppeld.
Zie vorige melding.
Dus eigenlijk zou de FilePicker al de juiste folder moeten openen adhv vb de eerste drie letters (in dit voorbeeld)

Ik weet dat je geen voorbeeld hebt

Code:
     Dim folder, subdir As String
    subdir = DLookup("code", "types", "type_id =" & Form_F_Type!Type)  'code = 100 of 101 of 102 of ....
    folder = "H:\TEMP\" & subdir & "\"

    Dim SelectedFile As String
    Dim FilePicker As Office.FileDialog
    Dim SQLdelete As String

    Set FilePicker = Application.FileDialog(msoFileDialogFilePicker)
    FilePicker.AllowMultiSelect = False
    FilePicker.Filters.Add "Excel", "*.xls ; *.csv", 1
    FilePicker.InitialFileName = folder
    FilePicker.title = "Please Select the Excel Data..."
    FilePicker.Show

    If FilePicker.SelectedItems.Count <> 0 Then
    SelectedFile = FilePicker.SelectedItems(1)

Folders :

H:\TEMP\100 tomaten\
H:\TEMP\101 appel\

Dus ergens moet een soort *.* komen. Een vb subdir 101*.*
Maar ben niet zeker of dit mogelijk is.
 
Ik gebruik nooit FilePicker, altijd FileDialog maar dat maakt eigenlijk niet uit. Mijn voorbeeldje (wat is er gebeurd met zelfwerkzaamheid? :)) heb ik gemaakt om de werking van het uitlezen van de map te testen; dat werkt prima. Het vervolg (de gevonden mapnaam verwerken in een FileDialog of FilePicker) mag je zelf bedenken. Kom je daar niet uit, dan krijg je die code uiteraard ook wel.
 
Hier de code, die werkt :) , om in een folder te gaan afhankelijk van de eerste 8 karakters van de foldernaam.
Vb foldernaam : 2000ANTW HOTEL ANTWERPEN
Code die gekend is vanuit Access en dropdown = 2000ANTW
Maw adhv deze code wordt verkenner al geopend in de juiste map.

Code:
Private Sub Knop40_Click()
    Dim Full_folder, Folder, Subdir, Code As String
    
    Code = DLookup("naam_ID", "hotels", "hotel_id =" & Form_F_hotel!hotel_Type_Combo)
    Folder = "F:\hotel\"
    Full_folder = ""
    Subdir = Dir(Folder, vbDirectory)
    
    Do While Subdir <> ""    ' Start the loop.
        If Subdir <> "." And Subdir <> ".." Then
            If (GetAttr(Folder & Subdir) And vbDirectory) = vbDirectory Then
                 If Left(Subdir, Len(Code)) = Code Then
                    Code = Subdir
                    Full_folder = Folder & Code & "\"
                    Exit Do
                 End If
            End If
        End If
        Subdir = Dir
    Loop
    
    If Full_folder = "" Then
        MsgBox "Folder is niet gevonden. Controleer de foldernaam in Verkenner"
        Full_folder = Folder    'Om al naar de standaard folder te gaan
    End If
    
    Dim SelectedFile As String
    Dim FilePicker As Office.FileDialog
    Set FilePicker = Application.FileDialog(msoFileDialogFilePicker)
    FilePicker.AllowMultiSelect = False
    FilePicker.InitialFileName = Full_folder
    FilePicker.title = "Please Select the File ..."
    FilePicker.Show

    If FilePicker.SelectedItems.Count <> 0 Then
          SelectedFile = FilePicker.SelectedItems(1)
    End If
    Application.FollowHyperlink SelectedFile
End Sub
 
Laatst bewerkt:
Er zitten nog wel een paar verbeterpuntjes in je code, ook al werkt het nu wel. Zoals:
Code:
    Dim Full_folder, Folder, Subdir, Code As String
Private Sub hotel_Type_Combo_Click()
Wat denk je dat je nu gedeclareerd hebt? 4 Stringvariabelen? Fout; je hebt 3 Varianten gedeclareerd en één string. En dat is in ieder geval inconsequent, want of allemaal string, of allemaal variant, zou ik dan zeggen. Er zijn ook variabelen teveel.
En waarom dit?
Code:
    Code = DLookup("naam_ID", "hotels", "hotel_id =" & Form_F_hotel!hotel_Type_Combo)
Een keuzelijst kun je direct aanspreken (Me.hotel_Type_Combo) dus waarom met DLookup? Nergens voor nodig. Bovendien: een keuzelijst met invoervak kan maar één keuze bevatten, dus waarom de hele operatie niet gelijk vanaf de keuzelijst gestart? Scheelt je een knop, en de gebruiker een keer nodeloos klikken.
Daarnaast heb je geen code gebruikt om de actie te sturen als de gebruiker in het dialoogvenster op Annuleren klikt, en dat moet je eigenlijk wel doen.
Laatste verbetering: gebruik With .. End With om de procedure beter te stroomlijnen. Alles meegenomen wat ik hierboven heb gepend, krijg je zoiets:

Code:
Private Sub hotel_Type_Combo_Click()
Dim FilePicker As Office.FileDialog
Dim Full_folder As String, Subdir As String, SelectedFile As String
Const Folder As String = "F:\hotel\"
    
    Subdir = Dir(Folder, vbDirectory)
    Do While Subdir <> ""    ' Start the loop.
        If Subdir <> "." And Subdir <> ".." Then
            If (GetAttr(Folder & Subdir) And vbDirectory) = vbDirectory Then
                 If Left(Subdir, Len(Me.hotel_Type_Combo)) = Me.hotel_Type_Combo Then
                    Full_folder = Folder & Subdir & "\"
                    Exit Do
                 End If
            End If
        End If
        Subdir = Dir
    Loop
    
    If Full_folder = "" Then
        MsgBox "Folder is niet gevonden. Controleer de foldernaam in Verkenner"
        Full_folder = Folder    'Om al naar de standaard folder te gaan
    End If
    
    Set FilePicker = Application.FileDialog(msoFileDialogFilePicker)
    With FilePicker
        .AllowMultiSelect = False
        .InitialFileName = Full_folder
        .Title = "Please Select the File ..."
        If .Show = True Then
            If .SelectedItems.Count = 1 Then SelectedFile = .SelectedItems(1)
        Else
            MsgBox "Je hebt op <Annuleren gedrukt.", vbOKOnly
            Exit Sub
        End If
    End With
    Application.FollowHyperlink SelectedFile
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan