hallo 
mein problem ist :
zb.: wenn wir 1 verzeichnis haben in 12 ordner enthalten sind
wobei das verzeichnis für das jahr steht und die ordner für die monate im jahr
ich hab jetzt 2 jahre angelegt
so und wenn ich jetzt in word durch meine dokumentvorlagen ein neues dokument erstelle
das dann ein macro enthällt mit dem ich ein fach nur speichern drücken muss und es dann genau in den monat speichert in dem wir uns gerade befinden
also wir haben gerade den 12.6.2006 oder den 27.6.2006 und ich speicher das dokument das in an diesen tagen erstellt habe
das es dann automatisch im ordner juni das sich im verzeichnis 2006 befindet speichert
gibt es da irgend eine macro lösung oder kann man das sogar anders lösen?
danke
mfg Philipp
Hallo,
das untenstehende Makro enstprechend anpassen (Konstante obersterPfad, d.h. die „Wurzel“ der Ordnerstruktur) und an ein Symbol in der Symbolleiste binden, bzw. per Menü: Extras->Makro->Makros->Ausführen aufrufen. Die Ordnerstruktur muss schon vorhanden sein. Der Dateiname wird selbständig erzeugt. Falls dieser abgefragt werden soll, sh. Bemerkung in der Prozedur.
Sub imRichtigenOrdnerSpeichern()
Dim pfad As String
Dim Dateiname As String
Dim heute As Date
Const obersterPfad As String = "C:\chaos\"
heute = Date
pfad = obersterPfad & Format(heute, "yyyy")
pfad = pfad & "\" & Format(heute, "mmmm") & "\"
Dateiname = "Datei\_vom\_" & Format(heute, "dd\_mm\_yyyy") & ".doc"
'für Abfrage eine Zeile drüber löschen und bei den nächsten drei Zeilen die ' entfernen
'Dateiname= InputBox ("Bitte Dateiname eingeben")
'If Dateiname="" Then Exit Sub
'If Right(Dateiname,4)".doc" then Dateiname=Dateiname & ".doc"
On Error GoTo PfadFehlt:
ChDir (pfad)
On Error GoTo 0
If Dir(pfad & Dateiname) "" Then
If MsgBox("Datei existiert bereits! Überschreiben?", vbYesNo) = vbNo Then Exit Sub
End If
ActiveDocument.SaveAs pfad & Dateiname
Exit Sub
PfadFehlt:
MsgBox "Pfad " & pfad & " nicht gefunden, erst anlegen!"
End Sub
Man könnte ggf. die Prozedur so erweitern, dass die Ordner auch selbständig angelegt werden.
Gruß tester
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Danke dir!!
hat super geklappt
Aber wie würde denn zb das ausehen wenn man in dem Dokument ein Datum einträgt und das er das dann in den Ordner Speicher welches Datum man dort eingetragen hat?
Kommt drauf an, wo das Datum stehen soll bzw. wie es im Dokument eingefügt wird.
- Variante 1: immer an der gleichen Stelle in einem Absatz der ausschliesslich für das Datum reserviert ist und der sich nicht verschiebt,
- Variante 2: in einem eingefügten benannten Datumsfeld (Symbolleiste „Formular“)
- Variante 3: an beliebiger Stelle (dies erfordert dann eine mauelle Markierung oder ggf. Setzung einer Textmarke)
Abhängig davon müsste dann die Prozedur an entsprechender Stelle das Datum auslesen. Auf alle Fälle muss sich das Datum im Dokument an einer eindeutig addressierbar Position befinden.
Also, welche Variante solls sein?
gruß tester
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Na es befindet sich in einem Texfeld was sich in der Kopfzeile befindet und dort hat es einen festen Platz.
Ach ja und gibt es acuh eine Möglichkeit bei dem anderen macro, in dem textfeld, in der abfrage ein muster festzulegen damit man weis wie es ungefähr aussehen muss was man abspeichern soll?
Danke für die Mühe!
mfg Philipp
Na es befindet sich in einem Texfeld was sich in der Kopfzeile befindet und dort hat es einen festen Platz.
Handelt es sich um eine richtige in Word (über Ansicht->Kopf- und Fußzeile) eingerichtete Kopfzeile oder nur um den Dokumentkopf, d.h. die obersten Zeilen des Dokuments?
Mit „Textfeld“ kann ich leider so nicht viel anfangen.
Meinst Du:
Formularfeld (geht allerdings nicht in einer richtigen Word-Kopfzeile),
ein sich aktualisierendes Feld mit dem Tagesdatum oder
ein grafisches Textfeld aus der Symbolleiste Zeichnen?
Wenn Du es selber nicht genau bezeichnen kannst, dann beschreib kurz den Weg oder die Menüfolge, wie Du es eingefügt hast.
Ach ja und gibt es acuh eine Möglichkeit bei dem anderen macro, :in dem textfeld, in der abfrage ein muster festzulegen damit man :weis wie es ungefähr aussehen muss was man abspeichern soll?
Tut mir leid, ich verstehe die Frage nicht!
Danke für die Mühe!
Bitte
mfg Philipp
tester
1.) Es ist die Kopfzeile aus -->Ansicht -->Kopf Und Fußzeile
2.)Die Vorlage stammt nicht von mir aber ich glaube es ist ein Textfeld aus der Symbolleiste Zeichnen …blos mit einem Unterschied.
Das Textfeld aus der Vorlage hat so einen grünen Punkt über dem Feld mit dem man das ganze Feld drehen kann.
Dieses hat das Textfeld aus der Symbolleiste Zeichnen nicht gleub ich.
3.)In deinem Macro gabst du mir die Entscheidung ob ich vor dem Speichern eine Abfrage machen möchte oder nicht.
Wenn ich eine abfrage wollte stand dort solle ich die eine Zeile löschen und bei 3 anderen Zeilen das ’ davor wegnehmen.
So ich habe die Abfrage aktiviert und nu ist meine Frage ob man in der
Messagebox die dort erscheint schon einen Mustersatz erscheinen lassen kann?
zb.:
Name, Vorname - 00.00.0000(Geb. Dat.) - 00.00.0000 (Aktuelles Dat.)
mfg Philipp
Ps.: Ich hoffe diesmal habe ich mich besser ausgedrückt 
PPs.: Ach ja und noch mal DANKE für deine Hilfe bisher!
Hallo Philipp,
Ich hoffe ich konnte jetzt alle Problemstellungen lösen.
Da ich keine genauen Angaben zum Datumseintrag habe, musst Du vorher noch ein paar Werte ermitteln und mit diesen eine Prozedurzeile anpassen:
-
Dokumentabschnitt in dem sich die Kopfzeile befindet: sh. Statusleiste
-
interner Name des Feldes, dazu:
-
Datumsfeld in der Kopfzeile markieren
-
Menü Extras->Makro->Visual Basic-Editor
-
darin Menü Ansicht->Direktfenster
-
Eingabe von : print selection.shaperange.name
-
mit Enter abschliessen und Ausgabename merken
Dann in die Prozedurzeile „Datum=cdate(…“
In der Programmierung bin ich davon ausgegangen, dass es sich um eine allgemeingültige Kopfzeile handelt, d.h. keine Einstellung nur Erste Seite oder so. Außerdem muss sich in der Kopfzeile irgendein grafisches Element (egal, ob Textbox oder Autoform) mit eingebundenem Text befinden.
Die Vorgabe eines Musterdateinamens in der Abfragebox habe ich auch eingerichtet.
Nun aber die Prozedur:
Public Sub imRichtigenOrdnerSpeichern()
Dim pfad As String
Dim Dateiname As String
Dim heute As Date
Dim Datum As Date
Const obersterPfad As String = "C:\chaos\"
heute = Date
'bei Verwendung aktuelles Tagesdatum
'Datum = heute
'bei Nutzung eines Datums in einem Grafikobjekt (Textbox oder Autoform) in der Kopfzeile
On Error GoTo DatumFehlt
Datum = CDate(ActiveDocument.Sections(1).Headers(wdHeaderFooterEvenPages).Shapes("Text Box 1").TextFrame.TextRange.Text)
On Error GoTo 0
'allgemeiner Code, nach Auslesen des Datums
pfad = obersterPfad & Format(Datum, "yyyy")
pfad = pfad & "\" & Format(Datum, "mmmm") & "\"
Dateiname = InputBox("Bitte Dateiname eingeben", \_
Default:="Name, Vorname - 00.00.0000(Geb. Dat.) -" & Format(heute, "dd.mm.yyyy") & ".doc")
If Dateiname = "" Then Exit Sub
If Right(Dateiname, 4) ".doc" Then Dateiname = Dateiname & ".doc"
On Error GoTo PfadFehlt:
ChDir (pfad)
On Error GoTo 0
If Dir(pfad & Dateiname) "" Then
If MsgBox("Datei existiert bereits! Überschreiben?", vbYesNo) = vbNo Then Exit Sub
End If
ActiveDocument.SaveAs pfad & Dateiname
MsgBox "Datei wurde unter: '" & pfad & Dateiname & "' gespeichert!"
Exit Sub
PfadFehlt:
MsgBox "Pfad " & pfad & " nicht gefunden, erst anlegen!"
Exit Sub
DatumFehlt:
MsgBox "Es ist kein Feld mit Datum vorhanden oder kein erkennbares Datum eingetragen!"
Exit Sub
End Sub
Hoffe, es funktioniert alles.
Viele Grüsse, tester
Irgendwie hab ich es nicht hinbekommen mit dem was du mir da angegeben hast obwohl das eigendlich schon ganz einleuchtend war was du geschrieben hast.
Ich hab das Word Dokument aber nu so angepasst das das Datum direkt unter der Kopfzeilen steht( also nicht mehr in der Kopfzeile), wo es eigendlich auch immer den selbern platz dann haben sollte.
(falls es weiter hilft ganz unten im Dokument steht:
Seite 1 Ab1 1/1 Bei 5,4cm Ze 1 Sp 1 - 11)
Wenn das nicht zu viel verlangt ist wenn du dich dem Problem hier noch einmal widmest dann wär ich dir sehr verbunden!!
mfg Philipp
Hallo,
ich glaube so kommen wir nicht weiter.
Bitte schick mir mal ein Musterdokument per E-Mail. Das pass ich Dir dann entsprechend an.
tester!
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]