MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access - MOF-FAQ > MOF-FAQ - Module/VBA/VBE
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 11.01.2003, 14:17   #1
Stefan Kulpa
MS-Office-Forum Team MS-Office-Forum Team
Normal Wie erhalte ich einen Dateiauswahldialog?

Der Dateiauswahldialog ist ein Windows eigener Systemdialog. Aus diesem Grund kann er von Windows Version zu Windows Version unterschiedlich aussehen – die Handhabung ist aber identisch.
Man kann nun diesen Dialog entweder mithilfe des ActiveX-Controls (Microsoft Common Dialog Control bzw. Comdlg32.ocx im System-Verzeichnis) aufrufen oder mittels der Win32-API. Darüber hinaus gibt es eine Reihe von Freeware-/Shareware-Tools, die ebenfalls diesen Dialog aufrufen können – grundsätzlich funktionieren alle auf die gleichen Art und Weise; sie rufen den in Windows vorhandenen Systemdialog auf.

Vorteil des ActiveX-Controls (Comdlg32.ocx):
Einfache Handhabung

Nachteil des ActiveX-Controls (Comdlg32.ocx):
Das Control steht nur zur Verfügung, wenn entweder die Access Developer Edition oder aber Visual Basic Professional (oder höher) vorliegt. Das Control bzw. dessen Update ist zwar im Internet verfügbar, aber ohne eine bestehende Lizenzdatei nicht einsetzbar.

Lösung 1: Nutzung des ActiveX-Controls (Comdlg32.ocx)

Um das ActiveX-Control nutzen zu können, muss dieses Control zunächst eingebunden werden:
Access: in der Formularansicht im Menü Einfügen den Punkt ActiveX-Steuerelement auswählen. In der daraufhin erscheinenden Liste Microsoft Common Dialog Control auswählen.
Visual Basic: im Menü Projekt den Punkt Komponenten auswählen. In der daraufhin erscheinenden Liste Microsoft Common Dialog Control durch Aktivierung des Kontrollkästchens auswählen.

Das Microsoft Common Dialog Control besitzt eine Vielzahl von Eigenschaften (Properies), da mit diesem Control nicht nur der Dateiauswahldialog aufgerufen werden kann, sondern auch weitere Systemdialoge:

• Farbauswahldialog
• Schriftenauswahldialog
• Druckerauswahldialog
• Aufruf des Windows Hilfesystems für eigene Hilfedateien

Bei der Nutzung dieses Controls muss man sich zunächst entscheiden, ob der Dialog zum Öffnen einer Datei bestimmt ist, oder aber zum Speichern einer Datei. Der Unterschied liegt darin, dass beim Öffnen die ausgewählte Datei vorhanden sein muss, beim Speichern aber dies nicht unbedingt gegeben sein muss (Neuanlage einer Datei).
Grundsätzlich jedoch führt das Control keinerlei Dateimanipulationen durch (Erstellen neuer Dateien etc.), sondern ist lediglich eine Schnittstelle zum Windows Dateisystem.

Die Vielzahl der erwähnten Eigenschaften decken die genannten Systemdialoge ab. Daher sind für den Dateidialog auch alle diese Eigenschaften notwendig. Um das Control ordnungsgemäß benutzen zu können, stehen folgende Eigenschaften für den Dateiauswahldialog zur Verfügung:

• CancelError Property
• DefaultExt Property
• DialogTitle Property
• FileName Property
• FileTitle Property
• Filter und FilterIndex Property
• Flags Property
• InitDir Property
• MaxFileSize Property

Die hier genannten und nachfolgend erläuterten Eigenschaften beziehen sich auf das Control in der Version 6.0.

Die Eigenschaft CancelError

Mit dieser Eigenschaft kann man dafür sorgen, dass im Fall eines Abbruchs des Dialogs (Abbrechen-Schaltfläche) ein Laufzeitfehler erzeugt wird, der über ein entsprechendes Fehlerhandling abgefangen werden kann. Ist dieser Wert nicht gesetzt, wird auch beim Abbruch kein Laufzeitfehler erzeugt.
Da es sich um einen Boolean-Wert handelt, muss diese Eigenschaft entweder mit True oder False gesetzt werden, wobei False die Standardeinstellung ist.

Die Eigenschaft DefaultExt

Mit dieser Eigenschaft kann man eine Standarddateierweiterung bestimmen. Wird beispielsweise der Dialog zum Speichern aufgerufen, die Standarddateierweiterung auf „.txt“ gesetzt und ein Dateiname ohne Erweiterung eingegeben, so wird diese Erweiterung automatisch an den Dateinamen angehängt.

Die Eigenschaft DialogTitle

Diese Eigenschaft steht nur für den Dateiauswahldialog zur Verfügung und erlaubt es, den Dialogtitel selbst auszuwählen. Die Standardtitel sind „Öffnen“ bzw. „Speichern unter…“.

Die Eigenschaft FileName

Mit dieser Eigenschaft hat man die Möglichkeit, einen Standarddateinamen im Dateidialog vorzubelegen. Nach Beendigung des Dialogs kann über diese Eigenschaft der komplette Dateipfad ermittelt werden.

Die Eigenschaft FileTitle

Über diese Eigenschaft steht nach Beendigung des Dialogs der Dateiname ohne Pfad zur Verfügung.

Die Eigenschaften Filter und FilterIndex

Über diese Eigenschaft kann man die Auswahlliste für die Dateitypen und somit das Verhalten des Controls in der (gefilterten) Anzeige von Datei beeinflussen.
Jeder Eintrag in dieser Dateitypenliste ist zweigeteilt. Zum einen wird die Beschreibung angezeigt und zum anderen wird die Filterung der Dateien im Control entsprechend der Dateiendung gesteuert. Alle Einträge in dieser Eigenschaft müssen durch das Pipe-Symbol | (ASCII 124) voneinander getrennt werden.
Beispiele:

Beschreibender TeilFiltertypEigenschaftswert
Textdateien (*.txt)*.txtTextdateien (*.txt)|*.txt
Grafiken (*.bmp;*.ico)*.bmp;*.icoGrafiken (*.bmp;*.ico)|*.bmp;*.ico


Stehen mehrere Dateitypen zur Auswahl, so sind diese Dateiendungen jeweils durch ein Semikolon voneinander zu trennen.

Diese Filter lassen sich auch entsprechend kombinieren:

Textdateien (*.txt)|*.txt| Grafiken (*.bmp;*.ico)|*.bmp;*.ico

Die FilterIndex-Eigenschaft wiederum bestimmt, welcher Eintrag in der Dateitypenliste beim Öffnen des Dialogs voreingestellt sein soll. Dabei ist zu beachten, dass der erste Listeneintrag den Index 1 besitzt! Wird der Filter „Textdateien (*.txt)|*.txt| Grafiken (*.bmp;*.ico)|*.bmp;*.ico
„ mit dem FilterIndex = 2 eingesetzt, so wird der Dialog beim Öffnen Grafiken vom Tap *.bmp bzw. *.ico anzeigen.

Die Eigenschaft Flags

Mit dieser Eigenschaft kann das Verhalten des Dialogs beeinflusst werden. Dazu steht eine Reihe von Konstanten zur Verfügung, welche in Kombination miteinander angewendet werden können:

KonstantennameFlags-WertBeschreibung
cdlOFNAllowMultiselect&H200 Ermöglicht, dass im Listenfeld Dateiname mehrere Dateien ausgewählt werden. Die FileName-Eigenschaft gibt einen String zurück, der alle ausgewählten Dateinamen enthält (die Namen sind im String durch Leerzeichen voneinander getrennt).
cdlOFNCreatePrompt&H2000 Fragt den Benutzer, ob eine Datei angelegt werden soll, die noch nicht existiert. Dieses Flag setzt automatisch die Flags cdlOFNPathMustExist und cldOFNFileMustExist.
cdlOFNExplorer&H80000 Verwendet das dem Explorer ähnliche Dialogfeld zum Öffnen von Dateien.
cdlOFNExtensionDifferent&H400 Weist darauf hin, dass sich die Dateinamenerweiterung des zurückgegebenen Dateinamens von der in der DefaultExt-Eigenschaft angegebenen Erweiterung unterscheidet. Dieses Flag wird nicht gesetzt, wenn die DefaultExt-Eigenschaft Null enthält, wenn die Erweiterungen übereinstimmen, oder wenn die Datei keine Erweiterung hat. Man kann den Wert dieses Flags überprüfen, nachdem das Dialogfeld geschlossen wurde.
cdlOFNFileMustExist&H1000 Die Benutzer dürfen nur Dateinamen eingeben, die existieren. Wenn dieses Flag gesetzt ist und der Benutzer gibt einen ungültigen Dateinamen ein, wird eine Warnung angezeigt. Dieses Flag setzt automatisch das Flag cdlOFNPathMustExist.
cdlOFNHelpButton&H10 Zeigt die Hilfe-Schaltfläche für das Dialogfeld an.
cdlOFNHideReadOnly&H4 Verbirgt das Kontrollkästchen Mit Schreibschutz öffnen.
cdlOFNLongNames&H200000 Erlaubt lange Dateinamen.
cdlOFNNoChangeDir&H8 Zwingt das Dialogfeld, das aktuelle Verzeichnis so zu setzen, wie es beim Öffnen des Dialogfelds gesetzt war.
cdlOFNNoDereferenceLinks&H100000 Verbietet die Dereferenzierung von Shell-Links (auch als Shortcuts bezeichnet). Standardmäßig bewirkt die Auswahl eines Shell-Links, dass dieser von der Shell dereferenziert wird.
cdlOFNNoLongNames&H40000 Verbietet lange Dateinamen.
cdlOFNNoReadOnlyReturn&H8000 Spezifiziert, dass die zurückgegebene Datei das Attribut Read-Only nicht gesetzt hat und sich nicht in einem schreibgeschützten Verzeichnis befindet.
cdlOFNNoValidate&H100 Erlaubt ungültige Zeichen im zurückgegebenen Dateinamen.
cdlOFNOverwritePrompt&H2 Bewirkt, dass das Dialogfeld Speichern unter eine Warnung erzeugt, wenn der angegebene Dateiname bereits existiert. (Die Benutzer können dann wählen, ob die Datei überschrieben werden soll.)
cdlOFNPathMustExist&H800 Die Benutzer dürfen nur gültige Pfade eingeben. Wenn dieses Flag gesetzt ist und die Benutzer einen ungültigen Pfad eingeben, erscheint eine Warnung.
cdlOFNReadOnly&H1 Markiert das Kontrollkästchen Mit Schreibschutz öffnen, wenn das Dialogfeld erzeugt wird. Dieses Flag gibt außerdem den Status des Kontrollkästchens Mit Schreibschutz öffnen nach dem Schließen des Dialogfelds an.
cdlOFNShareAware&H4000 Zeigt an, dass mögliche Freigabe-Fehler ignoriert werden.


Die Verknüfpung von mehreren Flags erfolgt mittels des Or-Operators:

Flags = cdlOFNAllowMultiselect Or cdlOFNFileMustExist

Die Eigenschaft InitDir

Mit dieser Eigenschaft kann man das Standardverzeichnis vorbelegen, den das Control zur Anzeige der Dateien benutzen soll. Ohne diese Vorbelegung wird der gerade aktuelle Ordner benutzt.

Die Eigenschaft MaxFileSize

Mit dieser Eigenschaft kann man die maximale Stringgröße für die FileName -Eigenschaft bestimmen. Standardmäßig werden 256 Bytes reserviert, was der maximalen Pfadlänge entspricht. Wenn jedoch das Flag cdlOFNAllowMultiselect gesetzt und entsprechend viele Dateien ausgewählt, so reichen diese 256 Bytes unter Umständen nicht mehr aus. Dieser Wert kann zwischen 1 und 32 KB liegen (32 KB = 32.768 Bytes = 128 Pfadmaximallängen).

Aufrufbeispiel des Öffnen-Dialogs:

Code:

Function Dateiauswahl() As String
 
    On Error GoTo Dlg_Error
    With CommonDialog1
     '// Beim Abbruch Laufzeitfehler erzeugen
        .CancelError = True
     '// Standard-Dialogtitel überschreiben
        .DialogTitle = "Bitte wählen Sie eine Datei aus:"
     '// Auswahlfilter bestimmen
        .Filter = "Alle Dateien (*.*)|*.*|" & _
                  "Microsoft Access Datenbank (*.mdb)|*.mdb|" & _
                  "Webseiten (*.htm;*.html)|*.htm;*.html"
     '// Zweiten Listeneintrag vorbelegen
        .FilterIndex = 2
     '// Flags setzen
        .Flags = cdlOFNAllowMultiselect Or _
                 cdlOFNFileMustExist Or _
                 cdlOFNExplorer
     '// Dilalog aufrufen
        .ShowOpen
     '// Ergebnisse ausgeben
         Dateiauswahl = .FileName
    End With
    Exit Function
 
Dlg_Error:
    If Err.Number = cdlCancel Then '32755 (&H7FF3)
          MsgBox "Abbruch wurde gewählt!"
    Else: MsgBox "Fehler #" & Err.Number & ": " & Err.Description
    End If
 
End Function
 
Sub Beispiel()
 
    Dim sFilepath As String
    sFilepath = Dateiauswahl()
    If Len(sFilepath) Then
        MsgBox "Dateiauswahl: " & sFilepath, vbInformation
    End If
 
End Sub
Code eingefügt mit dem MOF Code Converter

Lösung 2: Nutzung des Win32-API

Die Lösung mittels Win32-API ähnelt in vielen Dingen der ActiveX-Lösung.

Statt dem Control wird hier mit einer entsprechenden Struktur gearbeitet, in deren Elemente die verschiedenen Einstellungen vorgenommen werden.

Type OPENFILENAME
     nStructSize     As Long    Länge der Struktur in Bytes
     hwndOwner       As Long    Windows-Handle des “Besitzerfensters”
     hInstance       As Long    für VB/A uninteressant
     sFilter         As String  s.o. die Eigenschaft Filter
     sCustomFilter   As String  für VB/A uninteressant
     nCustFilterSize As Long    für VB/A uninteressant
     nFilterIndex    As Long    s.o. die Eigenschaft FilterIndex
     sFile           As String  s.o. die Eigenschaft FileName
     nFileSize       As Long    s.o. die Eigenschaft MaxFileSize
     sFileTitle      As String  s.o. die Eigenschaft FileTitle
     nTitleSize      As Long    Länge des Buffers für sFileTitle
     sInitDir        As String  s.o. die Eigenschaft InitDir
     sDlgTitle       As String  s.o. die Eigenschaft DialogTitle
     Flags           As Long    s.o. die Eigenschaft Flags
     nFileOffset     As Integer Offset des ersten Dateinamens bei Mehrfachauswahl
     nFileExt        As Integer Offset des ersten Dateiendung bei Mehrfachauswahl
     sDefFileExt     As String  s.o. die Eigenschaft DefaultExt
     nCustData       As Long    Message für Hook-Funktion des Dialogs
     fnHook          As Long    Funktionsadresse einer Hook-Funktion
     sTemplateName   As String  für VB/A uninteressant
End Type

Beispiel für den API-Aufruf:

Code:

Const OFN_READONLY           As Long = &H1
Const OFN_EXPLORER           As Long = &H80000
Const OFN_LONGNAMES          As Long = &H200000
Const OFN_CREATEPROMPT       As Long = &H2000
Const OFN_NODEREFERENCELINKS As Long = &H100000
Const OFN_OVERWRITEPROMPT    As Long = &H2
Const OFN_HIDEREADONLY       As Long = &H4
Const OFS_FILE_OPEN_FLAGS    As Long = OFN_EXPLORER _
                                    Or OFN_LONGNAMES _
                                    Or OFN_CREATEPROMPT _
                                    Or OFN_NODEREFERENCELINKS
Const OFS_FILE_SAVE_FLAGS    As Long = OFN_EXPLORER _
                                    Or OFN_LONGNAMES _
                                    Or OFN_OVERWRITEPROMPT _
                                    Or OFN_HIDEREADONLY
Type OPENFILENAME
     nStructSize     As Long
     hwndOwner       As Long
     hInstance       As Long
     sFilter         As String
     sCustomFilter   As String
     nCustFilterSize As Long
     nFilterIndex    As Long
     sFile           As String
     nFileSize       As Long
     sFileTitle      As String
     nTitleSize      As Long
     sInitDir        As String
     sDlgTitle       As String
     Flags           As Long
     nFileOffset     As Integer
     nFileExt        As Integer
     sDefFileExt     As String
     nCustData       As Long
     fnHook          As Long
     sTemplateName   As String
End Type
 
Declare Function GetActiveWindow Lib "user32.dll" () As Long
Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                "GetOpenFileNameA" _
                (pOpenfilename As OPENFILENAME) As Long
Declare Function GetSaveFileName Lib "comdlg32.dll" Alias _
                "GetSaveFileNameA" _
                (pOpenfilename As OPENFILENAME) As Long
Declare Function GetShortPathName Lib "kernel32.dll" Alias _
                "GetShortPathNameA" _
                (ByVal lpszLongPath As String, _
                 ByVal lpszShortPath As String, _
                 ByVal cchBuffer As Long) As Long
 
Function Dateiauswahl() As String
 
    Dim sFilter As String
'// --------------------------------------------------------------------------
'// Strukturvariable vom Typ OPENFILENAME erzeugen
'// --------------------------------------------------------------------------
    Dim uOFN As OPENFILENAME
'// --------------------------------------------------------------------------
'// Strukturgröße und Elternfenster setzen
'// --------------------------------------------------------------------------
    uOFN.nStructSize = Len(uOFN)
    uOFN.hwndOwner = GetActiveWindow()
'// --------------------------------------------------------------------------
'// Filter setzen und Index auf 2 (Datenbanken) setzen
'// Format: "Name" \n "Ext." \n "Name" \n "Ext." ... \n\n
'// --------------------------------------------------------------------------
    sFilter = "Alle Dateien (*.*)" & vbNullChar & "*.*" & vbNullChar & _
              "MS Access Datenbank (*.mdb)" & vbNullChar & "*.mdb" & vbNullChar & _
              "Webseiten (*.htm;*.html)" & vbNullChar & "*.htm;*.html"
    sFilter = sFilter & vbNullChar & vbNullChar
 
    uOFN.sFilter = sFilter
    uOFN.nFilterIndex = 2
'// --------------------------------------------------------------------------
'// Dialogtitel setzen
'// --------------------------------------------------------------------------
    uOFN.sDlgTitle = "Bitte wählen Sie eine Datei aus:"
'// --------------------------------------------------------------------------
'// Flags setzen
'// --------------------------------------------------------------------------
    uOFN.Flags = OFS_FILE_OPEN_FLAGS
'// --------------------------------------------------------------------------
'// Speicher für sFile und sFileTitle reservieren
'// --------------------------------------------------------------------------
    uOFN.sFile = Space$(256) & vbNullChar
    uOFN.nFileSize = Len(uOFN.sFile)
    uOFN.sFileTitle = Space$(256) & vbNullChar
    uOFN.nTitleSize = Len(uOFN.sFileTitle)
'// --------------------------------------------------------------------------
'// Funktion aufrufen und auswerten
'// --------------------------------------------------------------------------
    If GetOpenFileName(uOFN) Then
        Dateiauswahl = Left(uOFN.sFile, InStr(uOFN.sFile, vbNullChar) - 1)
    Else
        MsgBox "Es wurde Abbruch gewählt!", vbInformation
    End If
 
End Function
 
Sub Beispiel()
 
    Dim sFilepath As String
    sFilepath = Dateiauswahl()
    If Len(sFilepath) Then
        MsgBox "Dateiauswahl: " & sFilepath, vbInformation
    End If
 
End Sub
Code eingefügt mit dem MOF Code Converter
Stefan Kulpa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.01.2004, 06:49   #2
stpimi
MOF Meister
MOF Meister
Standard

Für Benutzer mit EXCEL (dürften ziemlich genau 100% der Anwender sein) läßt sich das ganze stark vereinfacht realisieren, weil die Kollegen von Microsoft so nett waren, die Windows-API-Variante in einer Methode des Objektes Excel.Application zu verpacken:

Verweis auf die Objektbibliothek von Excel setzen
Stringvariable definieren
Stringvariable = Excel.Application.GetOpenFilename (Parameter)


Zitat:

GetOpenFilename-Methode


Zeigt das Standarddialogfeld Öffnen an und bekommt einen Dateinamen vom Benutzer, ohne jedoch irgendwelche Dateien zu öffnen.

Syntax

Ausdruck.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)

Ausdruck Erforderlich. Ein Ausdruck, der ein Application-Objekt zurückgibt.

FileFilter Variant optional. Eine Zeichenfolge, die die Dateifilterkriterien angibt.

Diese Zeichenfolge besteht aus Zeichenfolgepaaren für den Dateifilter, gefolgt von einer MS-DOS-Platzhalterspezifikation für den Dateifilter, wobei jeder Teil und jedes Paar durch Kommas getrennt sind. Jedes einzelne Paar wird im Dropdownlistenfeld Dateityp angezeigt. Die folgende Zeichenfolge gibt beispielsweise die beiden Dateifilter Text und Add-In an: "Textdateien (*.txt), *.txt, Add-In-Dateien (*.xla), *.xla".

Um mehrere MS-DOS-Platzhalterausdrücke für einen einzelnen Dateifiltertyp anzugeben, trennen Sie die Platzhalterausdrücke mit Semikola. Beispiel: "Visual Basic-Dateien (*.bas; *.txt),*.bas;*.txt".

Wird dieses Argument ausgelassen, wird der Standardwert "Alle Dateien (*.*),*.*" verwendet.

FilterIndex Variant optional. Gibt die Indexnummer der Standarddatei-Filterkriterien an, von 1 bis zu der Anzahl der in FileFilter angegebenen Filter. Wird dieses Argument ausgelassen oder ist es größer als die Anzahl der vorhandenen Filter, wird der erste Dateifilter verwendet.

Title Variant optional. Gibt den Titel des Dialogfelds an. Wird dieses Argument ausgelassen, wird der Titel "Öffnen" verwendet.

ButtonText Variant optional. Nur bei Macintosh.

MultiSelect Variant optional. True, damit mehrere Dateinamen ausgewählt werden können. False, damit nur ein Dateiname ausgewählt werden kann. Der Standardwert ist False



Anmerkungen

Diese Methode gibt den ausgewählten Dateinamen oder den vom Benutzer eingegebenen Namen zurück. Der zurückgegebene Name kann eine Pfadangabe enthalten. Ist MultiSelect auf True eingestellt, bildet der Rückgabewert eine Matrix der ausgewählten Dateinamen (auch wenn lediglich ein Dateiname ausgewählt wurde). Gibt False zurück, wenn der Benutzer das Dialogfeld mit Abbrechen verlässt.

Diese Methode kann unter Umständen das aktuelle Laufwerk oder den aktuellen Ordner ändern.


Mfg, Michael

__________________

Mfg, Michael

Alte Programmiererweisheit: Kaum macht man's richtig, funktioniert es schon ....

PS: Dein Feedback hilft allen weiter - vergiss es nicht ...!!

(Systemumgebung: Windows XP, Office XP/2003)

relationale Datenbanken | FAQ | Reinhard Kraasch | Access-Grundlagen | Uploads | DB-Wiki |Die 10 Access-Gebote | Makros - besser nicht!
stpimi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 18.10.2005, 11:29   #3
joergh71
Neuer Benutzer
Neuer Benutzer
Standard Problem bei MS XP

Hallo,
ich habe den Dateiauswahldialog bisher fast genau so in einem Access-Modul benutzt.
Bei den Betriebssystemen MS 95 und 98 funktionierte das bisher auch tadellos.
Bei Windows XP wird aber der Dateiauswahldialog nicht geöffnet.
Wer kann mir da weiterhelfen?

Danke,
Jörg

Geändert von joergh71 (18.10.2005 um 11:33 Uhr).
joergh71 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 28.06.2006, 07:04   #4
elchvonoslo
Neuer Benutzer
Neuer Benutzer
Standard

Hei,
ich würde gern eine Datei in VB.NET über einen Auswahldialog in eine Variable speichern. Mit folgendem Code glaube ich schon ganz nah dran zu sein:

Function Dateiauswahl() As String

On Error GoTo Dlg_Error
With CommonDialog1
'// Beim Abbruch Laufzeitfehler erzeugen
.CancelError = True
'// Standard-Dialogtitel überschreiben
.DialogTitle = "Bitte wählen Sie eine Datei aus:"
'// Auswahlfilter bestimmen
.Filter = "Alle Dateien (*.*)|*.*|" & _
"Microsoft Access Datenbank (*.mdb)|*.mdb|" & _
"Webseiten (*.htm;*.html)|*.htm;*.html"
'// Zweiten Listeneintrag vorbelegen
.FilterIndex = 2
'// Flags setzen
.Flags = cdlOFNAllowMultiselect Or _
cdlOFNFileMustExist Or _
cdlOFNExplorer
'// Dilalog aufrufen
.ShowOpen
'// Ergebnisse ausgeben
Dateiauswahl = .FileName
End With
Exit Function

Dlg_Error:
If Err.Number = cdlCancel Then '32755 (&H7FF3)
MsgBox "Abbruch wurde gewählt!"
Else: MsgBox "Fehler #" & Err.Number & ": " & Err.Description
End If

End Function

Sub Beispiel()

Dim sFilepath As String
sFilepath = Dateiauswahl()
If Len(sFilepath) Then
MsgBox "Dateiauswahl: " & sFilepath, vbInformation
End If

End Sub

Nur meckert mein Debugger nun dass "CommonDialog1" nicht deklariert sei.
Welchen Typ muss "CommonDialog1" zugewiesen bekommen?
CommonDialog ist es nicht.
Wie muss ich meinem VB.NET Projekt beibringen, dass es Microsoft Common Dialog Control mit einbinden soll?
Hierüber funktioniert es bei VB.Net nicht, da es den entsprechenden Unterpunkt im Menü Projekte nicht gibt:
"Visual Basic: im Menü Projekt den Punkt Komponenten auswählen. In der daraufhin erscheinenden Liste Microsoft Common Dialog Control durch Aktivierung des Kontrollkästchens auswählen."

Danke!

PS: Ich bin blutiger Anfänger!
elchvonoslo ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.08.2006, 13:10   #5
mech
Neuer Benutzer
Neuer Benutzer
Standard "Dateiauswahldialog"

"Dateiauswahldialog" funktioniert beim mir leider auch nicht,
weil ja das entspr. ActiveX-Controls (Comdlg32.ocx) angeblich
nicht gefunden und somit nicht eingebunden wird.

Ich setze auf: Access 2003 bzw. Windows 2000.
mech ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.