Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
624to628
624to628
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

GetSaveAsFilename als API Funktion.

GetSaveAsFilename als API Funktion.
16.06.2005 10:01:47
Heiko
Hallo Forum,
in Excel gibt es ja so schöne Funktionen wie GetSaveAsFilename oder GetOpenFilename. Die beruhen doch bestimmt auf API Funktionen, oder nicht ?!
Meine Frage an euch, hat einer die entsprechenden API Funktion gerade parat [am besten gleich Anwendefertig ;-) ], da ich zur Zeit ein VBA Script in Corel-Draw schreibe und es da diese Dinger so nicht gibt.
Ich weiss es gibt da GetFileBox, aber das Ding stürzt bei mir immer aber wenn dieser Dialog nur einmal geöffnet wurde.
Danke für Code und Tipps,
Gruß Heiko

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GetSaveAsFilename als API Funktion.
16.06.2005 11:51:31
Heiko
Hallo Bernd,
danke für den Tipp, habe mir jetzt was da raus gesucht und für mich angepaßt. Hier mal zur Vollständigkeit die Funktionen.
Gruß Heiko
Option Explicit
Private Declare

Function GetSaveFileName Lib "comdlg32.dll" Alias _
"GetSaveFileNameA" (lpofn As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustomFilter 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
' Zeigt ein Dialogfeld mit der Möglichkeit, mehrere Dateien
' auszuwählen. In diesem Fall enthält lpstrFile den Pfad und
' anschließend alle Dateinamen.
' nFileOffset zeigt auf den Index des ersten Dateinamens nach
' der Pfadangabe.
' lpstrFile enthält alle Dateinamen durch Chr$(0) getrennt.
' Am Ende folgt ein zweites Chr$(0). Bei alten Win-3.x-
' Dialoge) sind die Dateinamen durch Leerzeichen getrennt.
' Diese Variante kennt keine langen Dateinamen.
Private Const OFN_ALLOWMULTISELECT = &H200
' Zeigt eine Meldung, wenn die Datei nicht existiert und
' fragt den Anwender, ob sie erzeugt werden soll.
Private Const OFN_CREATEPROMPT = &H2000
' Aktiviert die Rückruffunktion lpfnHook.
Private Const OFN_ENABLEHOOK = &H20
' Aktiviert die Dialogfeldvorlage.
Private Const OFN_ENABLETEMPLATE = &H40
' Aktiviert die Dialogfeldvorlage.
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
' Nutzt Explorer-Dialoge. Diese Einstellung ist die Vorgabe,
' selbst wenn Sie dieses Flag nicht angeben. Für alte
' Win-3.x-Dialoge müssen Sie das Flag löschen.
' Sie müssen es in den folgenden Fällen setzen:
' - bei OFN_ALLOWMULTISELECT.
' - wenn Sie Dialogfeldvorlagen und Rückruffunktionen benutzen.
Private Const OFN_EXPLORER = &H80000
' Gibt an, dass der Anwender einen Dateinamen mit einer
' anderen Erweiterung als lpstrDefExt eingeben kann.
Private Const OFN_EXTENSIONDIFFERENT = &H400&
' Gibt an, dass der Anwender nur die Namen von existierenden
' Dateien eingeben kann. Andernfalls wird eine Warnmeldung
' ausgegeben.
' OFN_PATHMUSTEXIST muß ebenfalls gesetzt werden.
Private Const OFN_FILEMUSTEXIST = &H1000
' Versteckt das Kontrollkästchen "Nur lesen".
Private Const OFN_HIDEREADONLY = &H4&
' Aktiviert die Unterstützung von langen Dateinamen in den
' alten Win-3.x-Dialogen.
Private Const OFN_LONGNAMES = &H200000
' Stellt das ursprüngliche Verzeichnis bei Ende des Dialoges
' wieder her, wenn der Anwender anderes Verzeichnis
' eingestellt hat.
Private Const OFN_NOCHANGEDIR = &H8&
' Weist das Dialogfeld an, bei einer markierten Verknüpfung
' Namen und Pfad der Verknüpungsdatei zurückzugeben, anstatt
' Namen und Pfad der Datei, auf die die Verknüpfung verweist.
Private Const OFN_NODEREFERENCELINKS = &H100000
' Deaktiviert die Unterstützung von langen Dateinamen in den
' alten Win-3.x-Dialogen.
Private Const OFN_NOLONGNAMES = &H40000
' Versteckt die Schaltfläche "Netzwerk".
Private Const OFN_NONETWORKBUTTON = &H20000
' Gibt an, dass keine Testdatei erzeugt wird, bevor der
' Dialog endet. In diesem Fall überprüft das Dialogfeld nicht
' auf Schreibschutz, Platzmangel auf dem Datenträger oder
' korrekten Netzwerkzugriff.
Private Const OFN_NOTESTFILECREATE = &H10000
' Gibt im Dialog "Speichern" eine Warnmeldung aus, wenn die
' Datei bereits existiert und durch das Speichern
' überschrieben wird.
Private Const OFN_OVERWRITEPROMPT = &H2&
' Gibt an, dass der Anwender nur die Namen von existierenden
' Verzeichnissen eingeben kann. Andernfalls wird eine
' Warnmeldung ausgegeben.
Private Const OFN_PATHMUSTEXIST = &H800
' Gibt an, das das Kontrollkästchen "Nur Lesen" angekreuzt
' ist, wenn der Dialog angezeigt wird.
Private Const OFN_READONLY = &H1
' Gibt an, dass die Funktion fehlschlägt, wenn ein
' Netzwerkfehler auftritt.
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHAREWARN = 0
Private Const OFN_SHARENOWARN = 1
' Zeigt im Dialogfeld den Hilfe-Schalter an. hwndOwner muß auf
' ein Fenster zeigen, das die Hilfe anzeigen kann. Explorer-
' Dialoge senden die Nachricht CDN_HELP an die Rückruffunktion.
Private Const OFN_SHOWHELP = &H10

Function SaveAsDialog() As String
'used in call setup
Dim sFilters, sType As String
Dim pos As Integer
'used after call
Dim buff As String
Dim sLname As String
Dim sSname As String
Dim OFName As OPENFILENAME
sFilters = ".gif-Dateien (*.gif)" & vbNullChar & _
"*.gif" & vbNullChar
With OFName
'Setzt die Größe der OPENFILENAME Struktur
.lStructSize = Len(OFName)
'Der Window Handle ist bei VBA fast immer &O0
.hwndOwner = &O0
' Formattyp-Filter setzen
.lpstrFilter = sFilters
.nFilterIndex = 1
' Buffer für Dateinamen erzeugen
.lpstrFile = Space$(1024) & vbNullChar & vbNullChar
' Maximale Anzahl der Dateinamen-Zeichen
.nMaxFile = Len(.lpstrFile)
' Buffer für Titel erzeugen
.lpstrFileTitle = Space$(254)
' Maximale Anzahl der Titel-Zeichen
.nMaxFileTitle = 255
' Anfangsverzeichnis vorgeben
.lpstrInitialDir = CurDir
' Titel des Dialogfester festlegen
.lpstrTitle = "Grafik als GIF-Datei exportieren"
' Flags zum Festlegen eines bestimmten Verhaltens,
' OFN_LONGNAMES = lange Dateinamen verwenden
.flags = OFN_LONGNAMES
End With
' API aufrufen und evtl. Fehler abfangen
If GetSaveFileName(OFName) Then
SaveAsDialog = Left(OFName.lpstrFile, InStr(1, OFName.lpstrFile, Chr(0)) - 1) & ".gif"
Else
SaveAsDialog = "" ' Abbruch durch Benutzer oder Fehler
End If
End Function

Anzeige

275 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige