Beim Abspeichern eines Dokuments macht Word es mir scheinbar leicht: Es schlägt praktischerweise einen Dateinamen vor. Nehme ich den Vorschlag an, habe ich den Speichervorgang schnell erledigt.
Erst später rächt sich das – wenn mir zu lange Dateinamen bei Datensicherung, Kopieren auf USB-Stick oder E-Mail-Versand Ärger bereiten.
Doch wie Abhilfe schaffen? Die Lösung ist glücklicherweise schnell erstellt.
Zugegeben, Zeiten, als Dateinamen maximal 8 Buchstaben lang sein durften, wünsche auch ich mir nicht zurück. Doch muss im Dateinamen wirklich ein ganzer Roman zu lesen sein?
Word schlägt mir als Dateinamen bis zu 223 Zeichen vor – und zwar die ersten 223 Zeichen meines Dokumentes.
Nur Satzzeichen, ein neuer Absatz, ein Zeilenumbruch, Anführungszeichen oder sonstige Sonderzeichen bremsen die Vorschlagswut von Word.
Nachdem gerade bei einem Kunden mal wieder die Rücksicherung von Word-Dateien mit extrem langen Dateinamen scheiterte, ziehe ich jetzt die Konsequenzen:
Ich stelle Word so ein, dass es maximal 30 Zeichen als Dateiname vorschlägt. Wird der Vorschlag vom Anwender manuell überschrieben und sind es mehr als 100 Zeichen , erfolgt eine Warnmeldung und der Speichervorgang wird abgebrochen.
Übrigens: Word selbst zieht je nach Speicherort erst bei 250 Zeichen die Notbremse und fordert mich auf, den Dateinamen zu kürzen.
“Fasse Dich kurz” – so lautet künftig die Devise nicht nur beim Telefonieren, sondern auch bei Dateinamen.
Da Word selbst für diese notwendige Einschränkung keine Einstellung bietet, muss eine VBA-Routine her. Diese wird auf allen PCs entweder in der Normal.dotm oder in einem Add-In im Startup-Ordner gespeichert (mehr dazu später).
Die VBA-Routine selbst besteht aus wenigen Zeilen und überlagert aufgrund des speziellen Namens den Dialog Speichern unter von Word. Hier der Code:
Sub FileSave()
With Dialogs(wdDialogFileSaveAs)
If ActiveDocument.Path = „“ Then
.Name = Left(.Name, 30)
lngButton = .Display
If lngButton = -1 Then
If Len(.Name) > 100 Then
MsgBox Prompt:=“Der Dateiname ist mit “ & Len(.Name) & _
“ Zeichen zu lang, es sind nur max. 100 Zeichen erlaubt“, _
Buttons:=vbCritical, _
Title:=“Hinweis des Admins:“
Else
.Execute
End If
End If
Else
.Execute
End If
End With
End Sub
Word startet die Routine immer dann, wenn das Speichern per Strg + S, per Klick auf das Speichern-Symbol in der Symbolleiste für den Schnellzugriff oder im Datei-Menü per Speichern-Befehl gestartet wird.
Falls das Dokument bereits gespeichert war und über einen Dateinamen verfügt, greift die Routine nicht ein.
Sicher, die Länge ist bei NTFS-Dateisystemen beim Einsatz der entsprechenden Unicode-APIs auf beachtliche 32K-Zeichen begrenzt – warum sich also über ein paar läppische Zeichen mehr aufregen?
Weil die API bislang schlicht von den meisten Programmen nicht genutzt wird. Mit dem Erfolg, dass die zahlreiche Programme bei Pfad & Dateinamen, die länger als 255 Zeichen sind, den Dienst versagen. Vielleicht sollte ich in meiner VBA-Routine besser nur maximal 50 Zeichen zulassen?
Im zweiten Teil zeige ich dann, wie das Makro in Word 2010 eingebaut wird.
Komme mit der Prozedur leider nicht klar.
.Name = Left(.Name, 30)
Die Eigenschaft „Name“ gibt es meines Erachtens beim Dialog-Objekt nicht. Sollte die Eigenschaft „Name“ des aktiven Dokuments gemeint sein, so lässt sich diese bei einem neuen Dokument nicht ändern !?
[…] Makro zum Überwachen des Dateinamenvorschlags (Blogbeitrag 05. Juni 2010) speichere ich als Add-In. Damit erreiche ich, dass es jederzeit aktiv ist – ohne Eingriff in die […]
Über den Autor