Hallo,
ich bin absoluter Access Neuling. Ich habe eine Datenbank erstellt, in der Datenblätter zu Personen abgespeichert werden. Also immer ein Eintrag pro Person. Nun möchte ich, wenn ich im Formular bin, die Möglichkeiten haben auf den Dateibrowser zuzugreifen und durch Ordner navigieren zu können, um dann das zur Person zugehörige PDF auswählen zu können, das mit dem jeweiligen Eintrag/der Person verknüpft werden soll. So dass dann am Ende im Formular dauerhaft die Verknüpfung zu diesem PDF besteht (ich möchte es nicht IN der DB speichern, es soll ein Link sein).
Hilfe hilfe... habe schon das Forum durchforstet aber verstehe die Antworten bei ähnlichen Fragen leider nicht ansatzweise, habe noch nie mit Links gearbeitet in Access.
Eine Anleitung für Dummys wäre also grandios.
Vielen Dank!
Verwende in Deinem Datensatz ein Feld vom Typ Text, nicht Hyperlink.
In dieses Feld wird jeweils der komplette Pfad (Pfad + Dateiname + Endung) eingetragen.
Application.FollowHyperlink Me.txtFullPathOfFileSo etwas könntest Du in die Ereignisprozedur eines Schaltflächenklicks oder eines Doppelklicks auf das Textfeld legen. Das würde unmittelbar zum Öffnen der Datei führen, ohne alles suchen.
Wenn im Textfeld nur ein Verzeichnis angegeben ist, wird mit der gleichen Anweisung der Explorer mit diesem Verzeichnis geöffnet. Dann kann man selbständig weiternavigieren.
Etwas anwendungssicherer wäre statt FollowHyperlink ShellExecute (Win-API).
Hallo,
@Eberhard
Ich glaube seine Frage bezieht sich auf deinen zweiten Satz,
also das Eintragen des Pfades. Da ist dann deine Codezeile
für ihn zunächst eher verwirrend. Damit wird die hinterlegte
Datei ja nur geöffnet.
@VVP Der erste Satz von Eberhard ist essentiell, will sagen, dass
das der übliche Weg ist, weil ein Textfeld leichter zu handeln
ist als eins vom Typ "Hyperlink".
Zitathabe schon das Forum durchforstet aber verstehe die Antworten bei ähnlichen Fragen leider nicht ansatzweise,
Was hast du denn gefunden, und wo hakt es dabei?
Das entscheidende Stichwort heisst "FileSystemObjekt". Falls es
das ist, was dir Probleme bereitet, hier ein Beispiel.
Du brauchst zunächst ein allgemeines Modul (bei mir heisst das
"Dateiauswahl") mit folgendem Code
Option Explicit
Private m_FileSystemObject As Object
_______________________________________________________________________
Public Function GetFSO() As Object
'diese Function stellt das Objekt zur Verfügung
If m_FileSystemObject Is Nothing Then
'wenn kein Objekt existiert, ...
Set m_FileSystemObject = CreateObject("Scripting.FilesystemObject")
'... neu anlegen und in der Variablen speichern
End If
Set GetFSO = m_FileSystemObject
'gibt das Objekt aus der Variablen an die aufrufende Prozedur (s.u.) zurück
End Function
Public Function GetFileName() As String
'öffnet den Datei-Explorer, ...
Dim FDO As Object
Set FDO = Application.FileDialog(3) 'msoFileDialogFilePicker
With FDO
.AllowMultiSelect = False
.InitialFileName = "EinVoreingestellterPfad"
.Title = "neue Importdatei auswählen"
If .Show = True Then
GetFileName = .SelectedItems(1)
'... und gibt den ausgewählten Dateinamen (-pfad) zurück
'beim Aufruf (s.u.) muss auf einen Abbruch durch den Anw. reagiert werden
End If
End With
End Function
Auf deinem Formular platzierst du neben das o.a. Textfeld einen Button
mit diesem Code
Private Sub DeinButton_OnClick()
If Nz(GetFileName,"") = "" Then 's.o.
MsgBox "Keine Datei ausgewählt!"
Exit Sub
Else
Me.txtFullPathOfFile = GetFileName
End If
End SubZum Öffnen der Datei nimmst du dann Eberhards Codezeile beim Klick auf
das Textfeld
If Nz(Me.txtFullPathOfFile,"") = "" Then
'falls das Feld noch leer ist
Exit Sub
Else
Application.FollowHyperlink Me.txtFullPathOfFile
End Ifgruss ekkehard
@ekkehard: Die Fragestellung ist eh noch sehr offen.
ZitatDatenbank erstellt, in der Datenblätter zu Personen abgespeichert werden
Wenn die Erstellung der Datenblätter-PDFs direkt aus der Anwendung erfolgt, hätte man jeweils schon den Pfad und müsste nicht erst einen Dateiauswahldialog einsetzen. Als Option ist der Dialog (Datei/Verzeichnis) immer sinnvoll.