Mai 25, 2022, 11:27:51

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Datei suchen und Pfad in Textfeld als Link schreiben

Begonnen von boernie, Januar 05, 2022, 17:09:18

⏪ vorheriges - nächstes ⏩

boernie

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


boernie

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.

DF6GL

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.

boernie

Januar 05, 2022, 17:57:41 #4 Letzte Bearbeitung: Januar 05, 2022, 18:56:27 von boernie
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

DF6GL

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"?

boernie

Hallo,

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

Danke

DF6GL

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.

boernie

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ß


boernie

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

DF6GL

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.



boernie

Hallo,

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

Melde mich wieder, wenn ich soweit bin.

Danke
Boerni

boernie

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