Feld als Dateinamen - WORD

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo,

ich schreibe dir jetzt nochmal eine neue Antwort, damit ich dir ein Video anhängen kann.

Hinweis: Um dich damit vertraut zu machen, wo und wie du Makros einfügen kannst, würde ich dir auf jeden Fall empfehlen, das angehängte Video anzuschauen, da du ja geschrieben hast, dass du dich mit Makros nicht so auskennt.

Um als Dokumentnamen im Speicherndialog die Rechnungsnummer vorgeben zu lassen, gehe bitte so vor, wie im Folgenden beschrieben.

1. Schritt: Der Rechnungsnummer in der Vorlage eine Textmarke zuweisen
  • Öffne die Dokumentvorlage, auf deren Grundlage die Rechnung erstellt wird (also bitte nicht nur ein Dokument öffnen), so dass du die Vorlage direkt bearbeiten kannst.
  • Markiere in der Vorlage die Rechungsnummer von der ersten bis zur letzten Ziffer oder das entsprechende Feld und gehe im Register Einfügen in der Gruppe Hyperlinks auf Textmarke.
  • Gebe in dem sich neu öffnenden Fenster als Textmarkenname den Namen Rechnungsnummer ein.
    Hinweis: Du musst genau diesen Textmarkennamen verwenden, da das Makro damit arbeitet. Wenn du einen anderen Namen bei der Textmarke verwendest, musst du in der Zeile DocName = .Bookmarks("Rechnungsnummer").Range.Text des Makros anstatt Rechungsnummer den Namen deiner Textmarke zwischen die Anführungszeichen schreiben und die Anführungszeichen unbedingt beibehalten.
  • Wenn du im Fenster Textmarke den Namen Rechnungsnummer eingegeben hast, klicke rechts auf Hinzufügen, damit deine Textmarke gesetzt wird.
2. Schritt: Die angehängten Makros in die Vorlage einfügen
  • Aktiviere die Entwicklertools-Registerkarte. Wie das geht erfährst du im angehängten Video.
  • Wenn du die Entwicklertools-Registerkarte aktiviert hast, klicke in dieser ganz links in der Gruppe Code auf die Schaltfläche Visual Basic. Es öffnet sich ein neues Fenster.
  • Falls in diesem Links unten das Eigenschaften-Fenster nicht angezeigt wird, klicke auf Ansicht → Eigenschaftenfenster oder drücke einfach F4, wenn du dich im Visual-Basic-Fenster befindest.
  • Klicke als nächstes UNBEDINGT ZUERST links im Projekt-Explorer auf Project (DeinVorlagenname).
  • Klicke jetzt oben in der Menüleiste auf Einfügen → Modul. In der Projektvorlage wird im Projekt-Explorer automatisch ein neuer Ordner mit dem Namen Module erstellt, in dem ein neues Modul mit dem Namen Modul1 erstellt wird.
  • Klicke dieses Modul DOPPELT an, damit du in dieses Modul wechselst.
  • Ich würde dir empfehlen, dass du das Modul unten im Eigenschaftenfenster im Feld (Name) noch in mdlSpeicherdialoge umbenennst. Das musst du nicht machen. Du kannst dem Modul auch jeden anderen Namen geben (bitte dabei keine Umlaute, Sonderzeichen und Leerzeichen verwenden) oder Modul1 lassen. Dass man vor die Modulnamen das Kürzel mdl schreibt ist nur eine Konvention, damit man gleich am Namen erkennt, dass es sich um ein "normales" Modul handelt.
  • Wenn du dem Modul also eventuell einen neuen Namen gegeben hast, klicke rechts in den Codebereich. Jetzt erst wird der Name des Moduls geändert.
  • Hier füge jetzt den folgenden Code ein (also ganz normal kopieren und dann in den Codebereich einfügen). Es handelt sich genauer gesagt um zwei verschiedene Makros, die deine Speicherdialoge (Speichern und Speichern unter...) bei allen Dokumenten, die auf deiner Rechnungsvorlage basieren, dahingehend verändern, dass sie als Speichernamen die Rechnungsnummer, die sich in der Textmarke Rechnungsnummer befindet, benutzen. Das passiert automatisch, sobald du den Speichern-Dialog auslöst, du musst also die Makros nicht extra ausführen.
  • Würde sich keine Textmarke Rechnungsnummer im Dokument befinden, würden die Makros den jeweils aktuellen Dokumentnamen als Speichernamen benutzen.
  • Als letztes musst im Visual Basic-Fenster einmal auf Datei → DeinVorlagenname speichern gehen, damit der Makrocode gespeichert wird.
  • Anschließend musst du noch die Veränderungen an der Vorlage einmal abspeichern, damit auch deine Textmarke in der Vorlage gespeichert wird.

Hier jetzt noch der Code des Makros:

Sub FileSave()

    If ActiveDocument.Path = "" Then
        FileSaveAs
        Exit Sub
    End If
    ActiveDocument.Save

End Sub
Sub FileSaveAs()

Dim DocName As String

    If ActiveDocument.Bookmarks.Exists("Rechnungsnummer") = True Then
        DocName = ActiveDocument.Bookmarks("Rechnungsnummer").Range.Text
    Else
        DocName = ActiveDocument.Name
    End If

    With Dialogs(wdDialogFileSaveAs)
        .Name = DocName
        .Show
    End With

End Sub
Ergebnis

Hast du alles richtig gemacht, befindet sich jetzt in deiner Dokumentvorlage eine Textmarke mit dem Namen Rechnungsnummer, die auf die Rechnungsnummer verweist und die Speicherdialoge wurden dahingehend geändert, dass sie dir automatisch die jeweilige Rechungsnummer vorschlagen.

Wenn du noch Fragen hast, melde dich ruhig nochmal.

Woher ich das weiß:eigene Erfahrung – Ich arbeite seit 25 Jahren nahezu täglich mit Word.

Gegengift 
Fragesteller
 14.05.2013, 20:55

Hat super geklappt. Danke!

1
BerchGerch  14.05.2013, 21:29
@Gegengift

Gern geschehen ;-) Herzlichen Dank für den Stern und das Kompliment.

0
GeorgMaUlWurf  03.09.2015, 12:11

Hey,

besteht auch die Möglichkeit den Standardspeicherort für eine bestimmte Vorlage zu ändern? Auch gerne über Bookmarks (es würde nur für "Berichtsheft" gelten müssen), da ich gerne einen anderen Speicherort hätte, ohne den Standardspeicherort zu verändern...

Kannst du mir helfen?

0
ScottiHG  09.11.2019, 19:54

Hallo,

tolle Programmierung, so was habe ich schon länger gesucht.

Nun mein Problem:

Ich habe das Makro in eine Vorlage eingefügt. Wenn man nun mit der Vorlage ein Dokument erstellt hat, dann verwendet man üblicherweise die Funktion "Speichern unter", um die Datei an einem beliebigen Ort zu speichern. Leider funktioniert da das Makro nicht. Es werden immer die ersten Textzeichen des Dokumentes verwendet.

Wenn ich jedoch die Funktion "Speichern" verwende, dann wird der Eintrag aus der Textmarke verwendet. Da funktioniert das Makro also.

Was muss an der Programmierung geändert werden, damit es in beiden Fällen gleich funktioniert?

PS: Ich verwende mittlerweile Word 2019

0

Hallo,

der einzige Weg den Standardnamen für Worddokumente zu ändern, sieht so aus, dass man den Titel in den Details der Normalvorlage ändert.

Suche dafür die Normalvorlage für Word (Normal.dotm) unter Windows. Sie befindet sich standardmäßig im Ordner

C:\Benutzer\ [Dein Benutzername] \AppData\Roaming\Microsoft\Templates.


Hinweis: Der Ordner AppData ist ein versteckter Ordner und daher standardmäßig unsichtbar. Um diesen sichtbar zu machen, klickst du im Windows-Explorer oben in der Menüleiste auf Organisieren → Ordner- und Suchoptionen.


Dort wechselst du auf die Registerkarte Ansicht und scrollst die Erweiterten Einstellungen nach unten. Hier stellst du bei den Versteckten Dateien und Ordnern die Auswahl auf Ausgeblendete Dateien, Ordner und Laufwerke anzeigen um (→ Bild 1). Jetzt solltest du den AppData-Ordner sehen und anwählen können.

Im Templates-Verzeichnis angekommen klickst du jetzt mit der rechten Maustaste auf die Normal.dotm und wählst im Kontextmenü Eigenschaften.

Wechsele hier in die Registerkarte Details und trage unter Titel die gewünschte Zahlenkombination ein (→ Bild 2).

Anschließend wird Word bei allen Dokumenten, die auf dieser Vorlage basieren, beim Speichern die eingetragene Zahlenkombination verwenden.

Soweit die Lösung deines Problems, solange es sich immer um dieselbe Zahlenkombination handelt, die zunächst beim Speichern verwendet werden soll.

Wenn du eine dynamische Zahlenkombination willst, weiß ich (noch) nicht, wie und ob das überhaupt möglich ist. Eventuell könnte man das mithilfe eines Makros bewerkstelligen, aber dafür müsste ich mich nochmal schlau machen.

Sag bitte Bescheid, wenn du weitere Hilfe brauchst.

Gruß, BerchGerch

Woher ich das weiß:eigene Erfahrung – Ich arbeite seit 25 Jahren nahezu täglich mit Word.

Gegengift 
Fragesteller
 11.05.2013, 10:29

Vielen Dank für deinen ausführlichen Beitrag. Ja der Vorschlag soll sich immer anpassen. Der Dateiname soll aus der Rechnungsnummer einer Rechnung bestehen.

Es gibt glaube ich Wege mit Makros oder VBA aber ich hab keine Ahnung wie das geht.

0
BerchGerch  11.05.2013, 10:33
@Gegengift

Ja wie gesagt, ich mach mich mal schlau. Ich weiß aber nicht, ob das so überhaupt möglich ist.

Falls ich sowas finde, stell ich dir den Code hier rein und erklär dir auch, wo du ihn hinpacken musst.

Aber eine Frage musst du mir noch beantworten:

Wo kommt die Rechnungsnummer her? Ich meine, ist das selbst eine Feldfunktion?

Falls das eine Feldfunktion ist: Wie lautet die? Und welche Art von Feld wird verwendet?

Gruß, BerchGerch

0
BerchGerch  11.05.2013, 13:18
@Gegengift

Ich bin's nochmal,

ich habe einen Weg gefunden. Allerdings habe ich im Moment keine Zeit, dir das hier ausführlich hinzuschreiben.

Wenn dir das reicht, würde ich es dir morgen nachmittag/abend hier einstellen.

Gruß, BerchGerch

1