Bestandsnaam overnemen in Access-veld

Status
Niet open voor verdere reacties.

handyhanky

Gebruiker
Lid geworden
12 jan 2010
Berichten
24
Goedemorgen allen
Ik zoek vba code om vanaf een access-formulier
1) verkenner te openen (dat lukt me wel)
2) dan wil ik een bestand selecteren en bijv. door dubbelklikken de bestandsnaam meenemen/bewaren in het access-formulier. (Met het bestand zelf hoeft niets te gebeuren het gaat mij er alleen om de naam op te zoeken)

Heeft iemand zo'n stukje code?
HG
 
Ik gebruik zelf een redelijk uitgebreide variant van wat jij vraagt, maar wellicht vind je dat eigenlijk wel een prima oplossing. In dat geval kun je alles denk ik wel overnemen, anders moet je wat onderdeeltjes weggooien. Mijn variant kun je gebruiken om het geladen document te openen, of het tekstvak leeg te maken als de link niet meer klopt.
Overigens is het overbodig om een verkenner te openen, omdat Office een FileDialog heeft waarmee je bestanden kunt selecteren. Vanuit de verkenner maak je het jezelf alleen maar nodeloos ingewikkeld, als het al zou kunnen. Mij boeit die variant in ieder geval zo weinig, dat ik er nooit een oplossing voor heb gezocht. Hier dus zoals ik het doe, gebaseerd op een tekstvak dat [kopie_cv] heet:

Code:
Private Sub kopie_cv_DblClick(Cancel As Integer)
    On Error GoTo Hell
    If Me.kopie_cv & "" = "" Then
        cmdCV_Click
    Else
        Application.FollowHyperlink Me.kopie_cv
    End If
    Exit Sub

Hell:
    If MsgBox("Het bestand '" & LCase(Me.kopie_cv) & "' ontbreekt in de dossiermap; wil je het verwijderen uit de lijst?", vbYesNo) = vbYes Then
        Me.kopie_cv = Null
    End If

End Sub

Code:
Private Sub cmdCV_Click()
Dim sFile As String
    
    sFile = BestandOpzoeken
    If sFile = "Annuleren" Then Exit Sub
    If Not Dir(sFile) = "" Then
        If InStr(1, sFile, "\") = 0 Then Exit Sub
        Me.kopie_cv = sFile
	'Of, als je alleen de bestandsnaam wilt opslaan:
        'Me.kopie_cv = Split(sFile, "\")(UBound(Split(sFile, "\")))
        Me.Repaint
    End If
End Sub

Code:
Function BestandOpzoeken(Optional Pad As String) As String
Dim dlgPicker As FileDialog
Dim sType() As String, sFile As String
Dim tmp As String, sPad As String
Dim bCheck As Boolean
Dim vrtSelectedItem As Variant

    On Error GoTo Hell
    If Pad = "" Then sPad = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") Else: sPad = Pad
    If Right(sPad, 1) <> "\" Then sPad = sPad & "\"
    Set dlgPicker = Application.FileDialog(msoFileDialogFilePicker)
    With dlgPicker
        .Title = "Selecteer een bestand." 'De titel voor het venster
        .InitialFileName = sPad      'Waar moet het venster beginnen?
        With .Filters
            .Clear
            .Add "Alles", "*.*", 1                                  'Geen Beperkingen op bestandstype"
            .Add "Microsoft Word", "*.doc; *.docx; *.docm", 2       'Beperk de bestandstypes tot .doc
            .Add "Microsoft Excel", "*.xls; *.xlsx; *.xlsm", 3      'Beperk de bestandstypes tot .xls
            .Add "Adobe Reader", "*.pdf", 4                         'Beperk de bestandstypes tot .pdf"
            .Add "Afbeeldingen", "*.jpg; *.jpeg; *.png", 5          'Beperk de bestandstypes tot afbeeldingen
        End With
        .FilterIndex = 1
        .AllowMultiSelect = False                   'Slechts één bestand kiezen toegestaan
        .InitialView = msoFileDialogViewList        'Bepaal weergave
        If .Show = -1 Then                          'Bepaal of gebruiker op OK-knop heeft geklikt.
            sFile = .SelectedItems(1)           'String wordt gevuld met geselecteerde bestand
        Else
            MsgBox "Er is op <Annuleren> gedrukt..."
            BestandOpzoeken = "Annuleren"
            GoTo Hell
        End If
    End With
    BestandOpzoeken = sFile
    
Hell:
    Set dlgPicker = Nothing

End Function

En dat zou moeten werken. Misschien moet je nog de Office Library aanzetten, en/of de Script library.
 
Als de naam van het geselecteerde bestand in het label 'Label1' moet komen te staan kun je voor de Commandknop 'Command0' de volgende code gebruiken:

Code:
Private Sub Command0_Click()
   With Application.FileDialog(3)
      If .Show Then Label1.Caption = .SelectedItems(1)
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan