Bestandspad weergeven in veld mbv FileDialogFilePicker in MS Access 2013

  • Onderwerp starter Onderwerp starter IsR
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

IsR

Gebruiker
Lid geworden
2 jul 2015
Berichten
94
Goedendag,

HELP, HELP !! Helaas moet ik een vraag opnieuw stellen (mijn vorig topic hierover is gesloten en kan ik dus niet meer heropenen).

Ik wil graag één bestand selecteren via FileDialog en het pad daarvan weergeven in een tekstvak (ms Access).

Nu heb ik een tijd geleden een vergelijkbare vraag gesteld (juni 2015), alleen de code die ik toen gekregen heb, krijg ik na een wijziging in mijn database niet meer werkend. :o:(
Het dialoogvenster verschijnt wel, maar na het selecteren van het goede bestand en op "OK" klikken, verschijnt het pad niet in mijn tekstvak??

De code moet gaan lopen op het moment dat het tekstvak de focus krijgt.

Tekstvaknaam is: txtbestandpad.

Allerlei soorten bestandstypen mogen worden gekozen, er is geen filtering daarvoor nodig.
Wel mogelijk een standaardmap waar moet worden gestart, maar welke map dit wordt is nog niet bekend.

Wie o Wie heeft een enorm simpel voorbeeld dat makkelijk aanpasbaar is naar mijn eigen situatie??
Ik ben zeer dankbaar voor de hulp.
IsR
 
IsR

Hierbij de code zoals deze werkt in 2007, deze zou ook in 2013 moeten werken.

Code:
Private Sub BtnZoekBestand_Click()
  
    'Benodigd Microsoft Office 11.0 Object Library of later
    Dim fDialog As Office.FileDialog
    Dim varFile As Variant
 
    'Verwijder oude gegevens
    Me.TxtBestandsnaam = ""
 
    'Opzetten File Dialog.
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
 
    With fDialog
        .AllowMultiSelect = False
        .Title = "Please select one file"
        'Verwijder eventuele filters
        .Filters.Clear
        .Filters.Add "All Files", "*.*"
              
        'Toon het scherm, als methode False teruggeeft is geen bestand gekozen.
        If .Show = True Then
            For Each varFile In .SelectedItems
                Me.TxtBestandsnaam = varFile
            Next
        Else
            MsgBox "You clicked Cancel in the file dialog box."
        End If
    End With
End Sub

Veel Succes.
 
Om de vraag correct te beantwoorden (dus zonder extra knop, maar met klikken in het tekstvak, deze oplossing die ook nog eens veel functioneler is omdat je hem op elk tekstvak kunt neerzetten, ongeacht welk formulier.
Code:
Private Sub txtbestandpad_Click()
    Me.txtbestandpad = ZoekBestand
End Sub

Code:
Private Function ZoekBestand() As String
'Benodigd Microsoft Office 11.0 Object Library of later
''Dim fDialog As Office.FileDialog
Dim fDialog As Object
Dim varFile As Variant
 
    'Opzetten File Dialog.
''    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    Set fDialog = FileDialog(3)
    With fDialog
        .AllowMultiSelect = False
        .Title = "Kies een bestand"
        .InitialFileName = CurrentProject.Path & "\"
        'Verwijder eventuele filters
        .Filters.Clear
        .Filters.Add "All Files", "*.*"
        'Toon het scherm, als methode False teruggeeft is geen bestand gekozen.
        If .Show = True Then
            ZoekBestand = .SelectedItems(1)
        Else
            ZoekBestand = "Geen bestand geselecteerd."
        End If
    End With
End Function

In de functie heb ik de FileDialog nu met Late Binding gemaakt. Dat heeft als voordeel dat je geen extra bibliotheek hoeft te laden. En dat maakt het verspreiden van de db wat makkelijker.
 
Sorry beiden, heb ergens de notificatie van jullie reacties gemist (o.a. door vakantie in ieder geval). Ga er meteen mee aan de slag.
 
Kan altijd gebeuren; de code is denk ik nog niet achterhaald :).
 
Hallo, heb het eindelijk geprobeerd. Op zich krijg ik nog steeds wel het "bestandsselectievenster" (de file dialogpicker) maar als ik op OK heb geklikt, krijg ik nog steeds het pad en/of de bestandsnaam in het tekstvak te zien (de oplossing van OctaFish)

Bij de oplossing van Elsendoorn2134 zie ik wèl een pad in het tekstvak.
Rara, maar er lijkt in ieder geval 1 van de 2 oplossingen zijn werk te doen.
Ik test nog even verder en laat ik het nog even definitief weten.
 
Laatst bewerkt:
Wat wil je eigenlijk doen, dat is mij niet helemaal duidelijk.
Ik wil graag één bestand selecteren via FileDialog en het pad daarvan weergeven in een tekstvak (ms Access).
Als je een pad wilt zien/opslaan in een tekstveld, kun je volstaan met het opzoeken van de betreffende folder met msoFileDialogFolderPicker als parameter. Met msoFileDialogFilePicker als parameter zoek je naar een specifiek bestand. Wat je wilt (volgens je vraag): een bestand selecteren en daar vervolgens het pad van uitlezen, is dus veel simpeler te doen met de juiste parameter (msoFileDialogFolderPicker) omdat het dan niet uitmaakt welke bestanden er in de map staan. En volgens je vraag wíl je die bestanden ook niet.
Ik kan je overigens verzekeren dat mijn code wel degelijk werkt in een tekstveld :).
 
Octafish, kan je dan een klein test-bestandje maken zodat ik kan zien wat er dan bij toch anders is? Ik heb nl. jouw codes exact gebruikt, maar misschien toch iets op een verkeerde plaats gezet.
Zou jouw oplossing ook wel graag werkend willen hebben, zodat ik bij een ander tekstvak kan volstaan met het aanroepen van "ZoekBestand".....

En oh ja, dat het bij jou wel werkt, daar twijfel ik niet aan ;)
 
Misschien is het handiger als jij een voorbeeldje maakt, zodat ik kan zien wat je fout doet. Als het tenminste niet werkt :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan