Probleme mit Makrostart beim Dokument öffnen Word 

  • Ersteller Ersteller Nano1980
  • Erstellt am Erstellt am
N

Nano1980

Ich habe in Word ein Makro geschrieben, welches beim Öffnen des Dokuments ausgeführt werden soll.
Ziel: Nach einem bestimmten Zeitintervall soll das aktuelle Dokument gespeichert werden und zeitgleich eine Kopie mit Datum, Uhrzeit in einem anderen Verzeichnis angelegt werden.

Starte ich die Sub "AutoOpen" per Hand klappt es tadellos, beim öffnen des Dokumentes wird zwar die Sub Zeitgeber aufgerufen (Message-Box mit test_1 und test_2 erscheint), aber die Funktion Application.OnTime wird anscheinend nicht ausgeführt. Woran kann das liegen?

Sub AutoOpen()
Zeitgeber
End Sub

----------------------------------------------

Sub Zeitgeber()
MsgBox ("test_1")
Application.OnTime When:=Now + TimeValue("00:00:10"), Name:="Automatisch_Sichern"
MsgBox ("test_2")
End Sub

----------------------------------------------

Sub Automatisch_Sichern()
MsgBox ("test_3")
On Error GoTo Fehlermeldung:
ActiveDocument.Save

Dok_Name = ActiveDocument.Name
PathAndFileName = "D:\Sicherung\"
PathAndFileName = PathAndFileName & Format(Date, "yyyy-mm-dd")
PathAndFileName = PathAndFileName & "_" & Format(Time, "HH-mm-ss")
PathAndFileName = PathAndFileName & "_" & Dok_Name

WordBasic.CopyFileA FileName:=WordBasic.[FileName$](), Directory:=PathAndFileName

Zeitgeber
Exit Sub
Fehlermeldung:
MsgBox ("Bitte speichern!")
Zeitgeber
End Sub
 
Ich finde eher spannend, dass hier eine Endlosschleife gebaut ist.

Zeitgeber() ruft Automatisch_Sichern() auf und
Automatisch_Sichern() ruft Zeitgeber() auf.

Heisst für mich, dass du eine "Autosicherung" implementieren willst. Ok, wenn gewünscht, sei es so.


Du solltest mal prüfen, ob Application.Documents zum Zeitpunkt der ÖFFNUNG überhaupt vorliegt.
Code:
If Application.Documents.Count >= 1 Then
MsgBox ActiveDocument.Name
Else
MsgBox "No documents are open"
End If
Einfach mal nach MsgBox ("test_3") einbauen.

Ich vermute, zu diesem Zeitpunkt ist das Dokument noch gar nicht Word-intern angelegt bzw. zugreifbar und an der Stelle die Verarbeitung abgebrochen wird.

Schau einfach mal.

Gruß
yuhu
 
Hallo,

die Schleife ist gewollt.
Ich habe Deinen Code vor der Zeile mit "Application.OnTime" eingebaut.
Er zeigt mir den richtigen Dokumentennamen an.
 
Na gut,

wenn du alle 10 Sekunden speichern möchtest ist das deine Sache.

Ich gehe davon aus, dass dein Test bei der Programmöffnung erfolgt ist.
Dann war es das wohl eher nicht. Bleibt die Frage ob man beim Öffnen direkt speichern darf :confuse: . Keine Ahnung, ob die Daten zu dem Zeitpunkt schon alle aktiv sind, so dass ein Speichern Erfolg hat.

Zu weiterem fehlt mir leider die spezielle Kenntnis bzgl. AutoOpen.
 
die 10 Sekunden sind zu Testzwecken. Das erste Mal gespeichert wird nach 10 Sekunden (oder später mal 15 Minuten) - das macht aber keinen Unterschied.
 
Ich habe deinen Code einfach in ein Word-Dokument in VBA reinkopiert, die Datei als .docm gespeichert, geschlossen und neu geöffnet. Das Backup funktioniert wie gewünscht. Wenn der Code in Ordnung ist, muss der Fehler in der Umgebung liegen. Hast du den ganzen Code im Dokument selbst in ThisDocument oder nur in einem Modul des Dokuments eingefügt? Schau dir das im Projekt-Explorer an (Strg+R). Und welche Word-Version benutzt du? Ich gehe von Office 2010 aus.

Im übrigen würde ich in der On Error-Zeile den Doppelpunkt entfernen. Und WordBasic? Schau dir mal FileSystemObject.CopyFile an.

Gruß

FeliX_22
 
Hallo,

ja unter Word 2010 funktioniert es, leider habe ich auf meinem Privatrechner nur Word 2007 und da geht es nicht. Dokument ist als .docm gespeichert. Der Code liegt unter ThisDocument.

Der Befehl von Wordbasic ist der einzige, der auch geöffnete Dateien kopiert (meines Wissens nach).

Danke!
 
Zurück
Oben Unten