PDA

Vollständige Version anzeigen : Dateipfad in Feld übergeben


HPG
30.08.2001, 08:03
Hallo NG,

ich möchte per Klick auf eine Schaltfläche den Explorer öffnen, eine Datei auswählen und den vollständigen Pfad in ein Feld im Form übergeben.
Mit meinem Code (s.u.) kann nur ein Pfad gesucht werden, keine Datei.
Wie müßte ich das umschreiben ?

Private Sub DateiWählen_Click()
Me!Datei = GetFolder("Datei aussuchen", Me.hWnd)
If Len(Trim(Nz(Me!Datei))) > 3 Then
Me!Datei = Me!Datei & "\"
End If
usw...

Danke im voraus
Gruß
Hans-Peter

BodoM
30.08.2001, 08:54
Hallo Hans-Peter,

ich benutze dafür folgende API-Funktion:

Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_READONLY = &H1
Public Const OFN_HIDEREADONLY = &H4
Public cnstNull As String * 1
Type TOpenFileName
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
Flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lpfnHook As Long
lCustData As Long
lpTemplateName As Long
End Type

Declare Function APT_GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As TOpenFileName) As Long

Public Function DateiSuche(Optional Titel As String) As String
Dim OpenFilename As typOpenFilename, l_Message As String, l_File As String * 255, l_FileTitle As String, _
l_DefExt As String, l_Msg As String, l_Result As Long, l_Title As String
On Error GoTo Fehler
l_Title = Titel
l_File = Space(255)
l_File = "DeineAccessdatei.mdb" & Chr(0)
With OpenFilename
.lStructSize = Len(OpenFilename)
.lpstrFilter = "Access(*.mdb)" & Chr$(0) & "*.MDB" & Chr(0)
.lpstrfile = l_File
.nMaxFile = Len(l_File)
.lpstrTitle = l_Title
.lpstrFileTitle = l_Title
.nMaxFileTitle = Len(l_Title)
.lpstrInitialDir = "Pfad, der zuerst geöffnet wird"
.nFilterIndex = 0
.flags = conOFN_HIDEREADONLY Or conOFN_FILEMUSTEXIST Or conOFN_PATHMUSTEXIST
End With
l_Result = GetSaveFileName(OpenFilename)
If l_Result = 0 Then
DateiSuche = ""
Exit Function
Else
DateiSuche = Left(OpenFilename.lpstrfile, InStr(OpenFilename.lpstrfile, Chr(0)) - 1)
End If
Exit Function
Fehler:
MsgBox Err.Description
End Function

Passe die Funktion Deinen Bedürfnissen an.
Übergebe der Funktion in der o. a. Form einen String, der im Titelfenster eingeblendet werden soll. Unter l_File kannst Du eine Dateiname angeben, nach dem standardmäßig gesucht wird. In meinem Beispiel habe ich ihn nicht der Funktion übergeben. Unter lpstrInitialDir kannst Du den Standardsuchpfad angeben.
Teste einfach mal die Funktion.

Gruß Bodo

HPG
30.08.2001, 08:59
Hallo Bodo,

ich bin ja richtig erschlagen, welchen Roman man schreiben muss, um einen Dateipfad in ein Feld zu übergeben.

Danke für deine Mühe, werde ich mir anpassen.

Gruß
Hans-Peter

BodoM
30.08.2001, 09:00
Hallo Hans-Peter,

habe gerade gesehen, dass ich beim kopieren nicht die richtige API-Funktion erwischt habe.
Hier ist sie:
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" _
(pOpenfilename As typOpenFilename) As Long

Gruß Bodo

Mikes
30.08.2001, 09:40
Hallo Hans-Peter,
Tommy (http://www.access-home.de) hat super Beispiel für so was !
Gruß
Mikes