Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: boernie am Januar 05, 2022, 17:09:18

Titel: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 05, 2022, 17:09:18
Hallo,

ich habe eine Access-Datenbank zur Verwaltung von Dokumenten. Über ein Formular möchte ich über einen Button den Dateiexplorer aufrufen, eine Datei suchen, und dann den Pfad als Link in ein Textfeld schreiben.

Wie kann ich das mit VBA realisieren. Ich habe schon verschiedene Möglichkeiten gefunden, kriege aber leider die Lösung nicht hin.

Vielen Dank
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: DF6GL am Januar 05, 2022, 17:21:14
Hallo,

was hast Du denn ausprobiert?



https://www.vba-tutorial.de/applikation/dateidialog.htm
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 05, 2022, 17:25:10
Den Code

Private Function OrdnerDialog() As String
    Dim oShell As Object
    Dim oOrdner As Object
   
    Set oShell = CreateObject("Shell.Application")
    Set oOrdner = oShell.BrowseForFolder( _
        Me.hWnd, "Bitte einen Ordner auswählen", 1)
       
    If Not oOrdner Is Nothing Then
        OrdnerDialog = oOrdner.Self.Path
    End If
   
    Set oOrdner = Nothing
    Set oShell = Nothing
End Function


hab' ich gefunden. Der läßt aber nur einen Ordner auswählem, keine Datei.


Beim nächsten Coe

Private Sub Befehl27_Click()

With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = Nz(Me.Text1, "")
        .Show
        If .SelectedItems.Count Then
            Me.Text1 = .SelectedItems(1) & "\"
        Else
            Me.Text = ""
        End If
    End With

End Sub

passiert gar nichts.

Leider sind meine VBA-Kenntnisse nicht so prickelnd.


Danke schon mal.
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: DF6GL am Januar 05, 2022, 17:30:06
Hallo,


aber wenigstens fdebuggen solltest Du können:


Haltepunkt an den anfang des Code setzen und mit F8 den Code durchlaufen. Dabei prüfst >Du bei jedem Schritt die die Inhalte der Variablen.


Und absolut wichtig:

In JEDEN Modulkopf "Option Explicit" schreiben!

Beim 2. Code ist der Verweis auf die MS Office Library erforderlich.
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 05, 2022, 17:57:41
Hallo Franz,

danke für die Antwort.
"Option Explicit" hab' ich gesetzt.

Beim Debuggen wird keine Meldung ausgegeben.
Soll das heißen, dass der Code paßt?

Wie setze ich den Verweis auf die MS Office Library?


Danke
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: DF6GL am Januar 05, 2022, 19:44:06
Hallo,

es heißt nur, dass keine undeklarierten Variablen verwendet werden. Ob der Code passt, siehst Du erst dann, wenn er richtig abläuft.

Hast Du nun mal "debuggt"?
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 05, 2022, 20:07:06
Hallo,

ja, ich hab' debuggt. Da passiert aber gar nichts.
Und die Library krieg ich auch nicht hin.

Danke
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: DF6GL am Januar 05, 2022, 20:16:10
Hallo,

was heißt, es passiert nichts?


Läuft der Code überhaupt durch?  Steht unter Ereignisse in der Eigenschaft des Butoons "Beim Klicken"  der Text [Ereignisprozedur] drin ?

Verweise werden gesetzt im VBA-Editor unter Extras/Verweise.
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 05, 2022, 21:20:32
Hallo Franz,

der Verweis auf die Library passt jetzt.
Der 2. Code funktioniert jetzt sehr gut.
Bis hier ist mein Problem gelöst.

Vielen Dank für die Hilfe.

Ich kämpfe mich jetzt weiter durch, um den Pfad als Link in einem Suchformular aufrufen zu können.

Evtl. melde ich mich später wieder.

Schönen Gruß
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: DF6GL am Januar 05, 2022, 21:52:37
Hallo,


Zitatum den Pfad als Link in einem Suchformular aufrufen zu können.


was heißt das genau?
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 05, 2022, 23:27:41
Hallo,

bei der Erfassung der Daten wird zu jedem Datensatz ein Link zu einem Dokument erfaßt.
Im Suchformular wird jetzt dieser Link mit aufgezeigt.

Eigentlich wollte ich aus der Trefferliste das Dokument direkt über den Link aufrufen.
Das geht ja offensichtlich nicht, zumindest habe ich nichts darüber efunden.

Eine weitere Idee ist, den Link aus dem akiven Datensatz in einem eigenen Textfeld anzuzeigen und daraus per Button aufzurufen.

Oder gibt es eine andere Möglichkeit?

Boernie
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: DF6GL am Januar 06, 2022, 09:20:18
Hallo,

ändere die Link-Felder in normale Textfelder und speichere den kompletten Pfad-Dateinamen in diesen Textfeldern.

Im Formular kann dann durch Doppelklick auf das Feld oder auch per Button die Datei in der passenden Ereignisprozedur mit

-- Followhyperlink
-- Shellexecute  (empfohlen)

geöffnet(aufgerufen) werden.


Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 06, 2022, 11:27:39
Hallo,

danke, das hört sich sehr gut an.
Ich werde das probieren.

Melde mich wieder, wenn ich soweit bin.

Danke
Boerni
Titel: Re: Datei suchen und Pfad in Textfeld als Link schreiben
Beitrag von: boernie am Januar 06, 2022, 22:44:23
Hallo Franz,

vielen Dank für die Hilfe.
Mein Problem ist gelöst!

Als Info für die Community:

- Verweis auf MS Office Library gesetzt
- Code zur Erfassung ergänzt
Private Sub Befehl27_Click()

With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = Nz(Me.Text25, "")
        .Show
        If .SelectedItems.Count Then
            Me.Text25 = .SelectedItems(1) & "\"
        Else
            Me.Text25 = ""
        End If
    End With

End Sub

- ShellExecute deklariert
Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
  Alias "ShellExecuteA" ( _
  ByVal hwnd As Long, _
  ByVal lpOperation As String, _
  ByVal lpFile As String, _
  ByVal lpParameters As String, _
  ByVal lpDirectory As String, _
  ByVal nShowCmd As Long) As Long

- Ereignisprozedur Doppelklick auf das Pfadfeld in Treffergrid gesetzt
Private Sub Rechnung_DblClick(Cancel As Integer)
Dim strPath As String
Dim stDocName As String
Dim Doc As String
Dim ufrmDatensatzsuchen As String

    stDocName = ufrmDatensatzsuchen
    Doc = Me!Rechnung

    strPath = stDocName & Doc
    ShellExecute 0, "open", strPath, "", "", 1
End Sub


Das Dokument kann direkt aus dem Treffergrid mit Doppelklick aufgerufen werden.


Schönen Gruß und danke
Boerni