PDA

Vollständige Version anzeigen : Frage zu Öffnen Dialog API


anotherone
27.08.2001, 13:05
Hallo,

hab folgendes Problem, ich möchte über einen Button den API-Öffnen Dialog starten, um darin eine Datei auszuwählen, deren Name dann in eine Tabelle eingetragen wird. Zuerst hab ich es mit der Version aus dem Buch Access 97 Programmierpraxis versucht, da krieg ich immer nur ein leeres Msgbox-Fenster. Jetzt hab ich aber bei access-home.de deren Version runtergeladen, die funzt auch prächtig, nur leider gibt sie mir nach der Auswahl in einem Msgbox-Fenster den genauen Pfad und Dateinamen an, aber das will ich gar net haben, ich will den Wert nur einem bestimmten Feld zuordnen. Im VBA-Code ist aber für mich der Aufruf dafür nicht zu entdecken, weiss jemand, wie ich das unterbinden kann???

Danke schonmal im Voraus

Anotherone

anotherone
27.08.2001, 13:10
Hier der VBA-Code dafür:

Public Function OpenFile(Optional Titel, Optional Filter, Optional Flags, _
Optional DefExtension, Optional AktDir)

Dim strDateiName As String
Dim strDlgTitel As String
Dim lFlags As Long
Dim strFilter As String
Dim strDefExtension As String
Dim strAktDir As String
Dim OpenDlg As TOpenFileName

cnstNull = Chr$(0)
strDateiName = String$(512, 0)
If IsMissing(Titel) Then
strDlgTitel = "Datei öffnen" & cnstNull
Else
strDlgTitel = Titel & cnstNull
End If

If IsMissing(Filter) Then
strFilter = "Alle Dateien" & cnstNull & "*.*" & cnstNull & cnstNull
Else
strFilter = Filter
End If

If IsMissing(Flags) Then
lFlags = OFN_FILEMUSTEXIST Or OFN_READONLY
Else
lFlags = Flags
End If

If IsMissing(DefExtension) Then
strDefExtension = cnstNull
Else
strDefExtension = DefExtension & cnstNull
End If

If IsMissing(AktDir) Then
strAktDir = CurDir$ & cnstNull
Else
strAktDir = AktDir & cnstNull
End If

With OpenDlg
.lStructSize = Len(OpenDlg)
.hwndOwner = Application.hWndAccessApp
.lpstrFilter = strFilter
.nFilterIndex = 1
.lpstrFile = strDateiName
.nMaxFile = Len(strDateiName)
.lpstrInitialDir = strAktDir
.lpstrTitle = strDlgTitel
.Flags = lFlags
.lpstrDefExt = strDefExtension
If APT_GetOpenFileName(OpenDlg) <> 0 Then
OpenFile = Left$(.lpstrFile, InStr(.lpstrFile, cnstNull) - 1)
Else
OpenFile = ""
End If
End With

End Function

Und dann Aufruf über Klickereignis des Buttons

Private Sub Befehl0_Click()

Dim Titel As String
Dim Filter As String
Dim Flags As Long
Dim StartPfad As String

Filter = "Access-Datenbanken" & Chr$(0) & "*.mdb" & Chr$(0) _
& "Add-Ins" & Chr$(0) & "*.mda" & Chr$(0) _
& "Text-Dateien" & Chr$(0) & "*.txt" & Chr$(0) _
& "Alle Dateien" & Chr$(0) & "*.*" & Chr$(0) & Chr$(0)
Titel = "Datei öffnen"
Flags = 4
StartPfad = CurDir
MsgBox OpenFile(Titel, Filter, Flags, , StartPfad)

End Sub

realneo
27.08.2001, 13:11
Hallo,
ich habe dies so geregelt du bindest die CommonDialog box in dein formular ein und dann legst du diesen code hinter einen button:


Private Sub pfad_Click()

CommonDialog1.ShowOpen

If CommonDialog1.FileTitle <> "" Then
Me.AV_Datei.Value = CommonDialog1.FileTitle
Else
End If
End Sub


hoffe ich konnte dir helfen

ciao
realneo

Sascha Trowitzsch
27.08.2001, 15:24
Statt:

MsgBox OpenFile(Titel, Filter, Flags, , StartPfad)

(Vorletzte Zeile)

setze:

MeinFeld = OpenFile(Titel, Filter, Flags, , StartPfad)

Ciao, Sascha

anotherone
28.08.2001, 12:24
Das wars!!! Ich dachte das MsgBox ... dient dazu, den Dialog erst aufzurufen, daher hatte ich noch ein zweites gesucht, was es ja nicht gab. Danke!!!