Tipp 0339
|
Word-Dialog Speichern unter
|
|
|
Autor/Einsender: Datum: |
|
Angie 15.06.2003 |
|
Entwicklungsumgebung: |
|
Word 97 |
|
|
Mit den in Word integrierten Dialogfeldern können Benutzereingaben mit VBA gesteuert werden.
Die Show-Methode des Dialog-Objekts zeigt eine Aktion in einem integrierten
Dialogfeld an und führt diese Aktion aus, die Display-Methode dagegen zeigt
ein Dialogfeld an, ohne die Aktionen im Dialogfeld auszuführen.
|
Die Display-Methode eignet sich besonders dann, wenn mit dem integrierten
Dialogfeld der Benutzer zu einer Eingabe aufgefordert werden soll und die
Einstellungen/Eingaben anschließend ausgewertet werden sollen.
|
Der Wert (Long), der von den Show- und Display-Methoden zurückgegeben
wird, gibt an, auf welche Schaltfläche geklickt wurde, um das Dialogfeld zu schließen.
Beim Dialog 'Speichern unter' zum Beispiel, entspricht -1 die Schaltfläche 'Speichern' und
0 die Schaltfläche 'Abbrechen'.
|
|
Auswerten der Display-Methode des Dialogs 'Speichern unter' |
|
Wurde die Schaltfläche 'Speichern' geklickt, könnte der eingegebene Dateiname über die
Name-Eigenschaft des Dialogs zurückgegeben werden. Allerdings ist es dem Anwender
möglich, im Dialog im Feld 'Dateiname' den Pfad inkl. Dateiname einzugeben. Ist dies der
Fall, so wird über die Name-Eigenschaft auch der Pfad inkl. Dateiname zurückgegeben!
Den ausgewählten Pfad könnte man mit der CurDir-Funktion ermitteln, das ist aber
unter bestimmten Umständen nicht unbedingt zuverlässig.
|
Wie man sieht, ist die Auswertung des Dialogs gar nicht so einfach.
|
Abhilfe schafft allerdings der "gute alte" WordBasic-Befehl FileNameInfo$,
mit dem die entsprechenden Informationen bzgl. der Eingaben zurückgegeben werden können.
|
|
|
WordBasic.FileNameInfo$(Filename$, InfoType)
|
|
|
InfoType-Konstanten
|
1 - Pfad inkl. Dateiname
2 - Nur Pfad, wenn die Datei im aktuellen Ordner ist,
sonst Pfad inkl. Dateiname
3 - Nur Dateiname
4 - Dateiname ohne Endung
5 - Nur Pfad
6 - UNC-Pfad
|
Anmerkung zu InfoType 4 - Dateiname ohne Endung
|
Bei der Verwendung des WordBasic-Befehls FileNameInfo$ in Verbindung
mit InfoType 4, wird nur der Teil des Dateinamens
zurückgegeben, der sich vor dem ersten vorkommenden Punkt befindet. Nachdem der Punkt zu einem
beliebten (!?!) Zeichen in Dateinamen geworden ist, sollte man den Dateinamen ohne Endung
vorsichtshalber mit VBA-Methoden ermitteln, ab Word 2000 z. B. mit der Funktion
InStrRev.
|
Der Link zum Download der von Microsoft zur Verfügung gestellten Word 95-WordBasic-Hilfe
(wrdbasic.exe) kann den Links zum Thema entnommen worden.
|
|
Word-Befehl DateiSpeichernUnter (FileSaveAs) ändern |
|
Möchte man den Benutzer zwingen, ein Dokument in einem bestimmten Verzeichnis unter einem
vorgegebenen Namen und Format zu speichern, könnte man den integrierten Word-Befehl
DateiSpeichernUnter (FileSaveAs) entsprechend ändern.
|
In folgendem Beispiel wird das aktive Dokument nur dann mit der SaveAs-Methode
im RTF-Format gespeichert, wenn der Dateiname ohne Endung nicht länger als 8 Zeichen ist.
|
|
|
Sub FileSaveAs()
Dim strPath As String
Dim strFileName As String
Dim lngFormat As Long
Dim lngRetVal As Long
Dim nPos As Long
On Error GoTo err_Handler
strPath = "c:\temp"
strFileName = "Datei_1"
lngFormat = wdFormatRTF
If Right$(strPath, 1) <> "\" Then
strPath = strPath & Application.PathSeparator
End If
With Application.Dialogs(wdDialogFileSaveAs)
.Name = strPath & strFileName
.Format = lngFormat
lngRetVal = .Display
If lngRetVal = -1 Then
strPath = WordBasic.FileNameInfo$(.Name, 5)
strFileName = WordBasic.FileNameInfo$(.Name, 3)
If InStr(1, strFileName, ".") > 0 Then
#If VBA6 Then
nPos = InStrRev(strFileName, ".")
#Else
nPos = InStrRevVB5(strFileName, ".")
#End If
strFileName = Left$(strFileName, nPos - 1)
End If
If Len(strFileName) > 8 Then
MsgBox "Sorry... der Dateiname darf nicht " & _
"länger als 8 Zeichen sein !", _
vbOKOnly + vbInformation
GoTo exit_Sub
End If
strFileName = strPath & strFileName
ActiveDocument.SaveAs FileName:=strFileName, _
FileFormat:=lngFormat
Else
MsgBox "Der Benutzer hat 'Abbrechen' geklickt !", _
vbOKOnly + vbInformation
End If
End With
exit_Sub:
On Error GoTo 0
Exit Sub
err_Handler:
MsgBox "Fehler #: " & Err.Number & vbCrLf & _
Err.Description, vbOKOnly + vbCritical
Resume exit_Sub
End Sub
Function InStrRevVB5(ByVal vsIn As String, _
ByVal vsSep As String) As Long
Dim nPos As Long
For nPos = Len(vsIn) To 1 Step -1
If Mid$(vsIn, nPos, Len(vsSep)) = vsSep Then
InStrRevVB5 = nPos
Exit Function
End If
Next
End Function
|
|
|
Dialog 'Speichern unter' zur Eingabe von Pfad und Dateiname anzeigen |
|
Hier wird der Dialog 'Speichern unter' angezeigt, damit der Benutzer für die Ausgabe von
Text in einer Text-Datei (*.txt) einen beliebigen Pfad und Dateinamen auswählen kann.
|
|
|
Sub GetFileNameForTXTFile()
Dim strPath As String
Dim strFileName As String
Dim strFileExt As String
Dim lngFormat As Long
Dim lngRetVal As Long
Dim nPos As Long
On Error GoTo err_Handler
strPath = CurDir()
strFileName = ""
strFileExt = ".txt"
lngFormat = wdFormatText
If Right$(strPath, 1) <> "\" Then
strPath = strPath & Application.PathSeparator
End If
With Application.Dialogs(wdDialogFileSaveAs)
.Name = strPath & strFileName
.Format = lngFormat
lngRetVal = .Display
If lngRetVal = -1 Then
strPath = WordBasic.FileNameInfo$(.Name, 5)
strFileName = WordBasic.FileNameInfo$(.Name, 3)
If InStr(1, strFileName, ".") > 0 Then
#If VBA6 Then
nPos = InStrRev(strFileName, ".")
#Else
nPos = InStrRevVB5(strFileName, ".")
#End If
strFileName = Left$(strFileName, nPos - 1)
End If
strFileName = strPath & strFileName & strFileExt
Dim FN As Integer
FN = FreeFile()
Open strFileName For Output As #FN
Print #FN, "Hallihallo..."
Close #FN
MsgBox "Die Textdatei wurde erfolgreich erstellt!" & _
vbCrLf & strFileName, vbOKOnly + vbInformation
Else
MsgBox "Der Benutzer hat 'Abbrechen' geklickt !", _
vbOKOnly + vbInformation
End If
End With
exit_Sub:
On Error GoTo 0
Exit Sub
err_Handler:
MsgBox "Fehler #: " & Err.Number & vbCrLf & _
Err.Description, vbOKOnly + vbCritical
Resume exit_Sub
End Sub
|
|
|
|
|
|
Die im Download befindlichen *.bas-Dateien können in Word im VB-Editor importiert werden.
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
Word-Version |
95 |
|
|
97 |
|
|
2000 |
|
|
2002
(XP) |
|
|
2003 |
|
|
2007 |
|
|
2010 |
|
|
|
|
Download (4,8 kB)
|
Downloads bisher: [ 888 ]
|
|
|