Dateiname ohne Dateiendung anzeigen |
|
|||||||||||||||||||||
Über die Feldfunktion { Filename } lässt sich der Dateiname des aktuellen Dokumentes an beliebiger Stelle im Dokument anzeigen. Sobald die Datei gespeichert ist,wird, je nach Einstellung in Windows, dabei entweder die Dateiendung ".doc" mit angezeigt oder nicht. Möchte man auf keinen Fall die Endung im Dokument angezeigt bekommen, kann man leider nicht auf eine Word-interne Funktion zurückgreifen, sondern kann sich eine entsprechende Funktion per VBA basteln. In diesem Beispiel wird dazu eine Dokumenteigenschaft (Datei/Eigenschaft/Anpassen) verwendet, in der der gekürzte Dateiname eingetragen wird. So steht diese Informationen anschließend über die Feldfunktion { DOCPROPERTY <Eigenschaft> } im Dokument zur Verfügung. Die Funktion Function fkt_NoExt(oDoc As Document) bekommt als Parameter das Dokument übergeben und prüft, ob der Dateiname auf .doc endet. In diesem Fall wird der Dateiname um die letzten 4 Zeichen gekürzt. Anschließend wird das Dokument dahingehend überprüft, ob es die Dateieigenschaft Dateiname besitzt. Ist die Eigenschaft noch nicht vorhanden wird sie im Dokument erstellt und mit dem gekürzten Dateinamen gefüllt. Function fkt_NoExt(oDoc As Document) Dim oProp As DocumentProperty Dim sFileName As String Const sProp As String = "Dateiname" If Right(oDoc.Name, 4) = ".doc" Then sFileName = Left(oDoc.Name, Len(oDoc.Name) - 4) End If On Error Resume Next Set oProp = oDoc.CustomDocumentProperties(sProp) If oProp Is Nothing Then Set oProp = oDoc.CustomDocumentProperties.Add( _ Name:=sProp, _ LinkToContent:=False, _ Type:=msoPropertyTypeString, _ Value:=oDoc.Name) End If oProp.Value = sFileName On Error GoTo 0 End Function Damit beim Speichern der Datei auch der gekürzte Dateiname mitgeändert wird, muss sich die dazu verwendete VBA-Funktion auch in die Speicherroutinen (Datei/Speichern und Datei/Speichern unter) von Word einklinken. Dies erfolgt, indem die entsprechenden Befehle abgefangen und nachprogrammiert werden. Sub FileSave() ActiveDocument.Save fkt_NoExt ActiveDocument End Sub Wird der Code in einer Dokumentvorlage gespeichert, kann die Dateieigenschaft über nachstehendes Makro bereits beim Erstellen neuer Dokumente erstellt und gefüllt werden. Sub AutoNew() fkt_NoExt ActiveDocument End Sub |
www.chf-online.de/vba/vbaNoExt.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |