Artikel-ID: 510291 - Geändert am: Donnerstag, 6. November 2003 - Version: 1.0

ACC2002: FileDialog schlägt fehl mit Access XP Runtime Installation

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel wurde zuvor veröffentlicht unter D45318
Alles erweitern | Alles schließen

Problembeschreibung

Wird innerhalb eines Formulars die Eigenschaft Application.FileDialog verwendet und zur Laufzeit dessen Methode Application.FileDialog.Show aufgerufen, wird die Anwendung automatisch beendet.

Ursache

Wenn ausschließlich die Runtime Version von Access XP auf dem Zielrechner installiert ist, funktioniert die Methode bzw. Eigenschaften von Application.FileDialog nicht fehlerfrei.

Umgehung:
Verwenden Sie die API-Funktionen des Betriebssystem.

Statt FileDialog.Show erstellen Sie folgenden VBA Code in ein Modul. Innerhalb von Formularen können Sie dann die Funktion "OpenDialog" aufrufen. Diese Funktion verwendet eine API-Funktion des Betriebssytems, um einen "Datei öffnen"-Dialog auszuführen. "OpenDialog" liefert innerhalb des Dialoges den vom Benutzer ausgewählten Dateinamen mit Pfad- und Laufwerksangabe an die aufrufende Routine als Zeichenkette zurück.
   Option Explicit
   Option Compare Database
   
   Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
        "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
   
   Private Type OPENFILENAME
       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
       lCustData As Long
       lpfnHook As Long
       lpTemplateName As String
   End Type
Function OpenDialog(strform As Form) As String
       Dim OpenFile As OPENFILENAME
       Dim lReturn As Long
       Dim sFilter As String
       OpenFile.lStructSize = Len(OpenFile)
       OpenFile.hwndOwner = strform.Hwnd
       sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
         "JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
       OpenFile.lpstrFilter = sFilter
       OpenFile.nFilterIndex = 1
       OpenFile.lpstrFile = String(257, 0)
       OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
       OpenFile.lpstrFileTitle = OpenFile.lpstrFile
       OpenFile.nMaxFileTitle = OpenFile.nMaxFile
       OpenFile.lpstrInitialDir = "C:\"
       OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
       OpenFile.flags = 0
       lReturn = GetOpenFileName(OpenFile)
           If lReturn = 0 Then
               MsgBox "A file was not selected!", vbInformation, _
                 "Select a file using the Common Dialog DLL"
            Else
               LaunchCD = Trim(OpenFile.lpstrFile)
            End If
   End Function

Weitere Informationen

Weitere Informationen finden Sie in folgendem Artikel der Microsoft Knowledge Base:
279508  (http://support.microsoft.com/kb/279508/DE/ ) How to Display and Use the File Dialog in Access 2002


303066  (http://support.microsoft.com/kb/303066/DE/ ) How to Use the Common Dialog API in an Access Database

Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen, sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität, sowie ohne Anspruch auf Support zur Verfügung. Bei Makro- und Programmlistings soll lediglich exemplarisch die Funktionsweise des Beispiels aufgezeigt werden.


Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Access 2002 Standard Edition
Keywords: 
application access vba fileopen api runtime filedialog KB510291
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.