Probleme mit Makrostart beim Dokument öffnen

  • Word

  • Nano1980
  • 4323 Aufrufe 6 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Probleme mit Makrostart beim Dokument öffnen

    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.

    Quellcode

    1. If Application.Documents.Count >= 1 Then
    2. MsgBox ActiveDocument.Name
    3. Else
    4. MsgBox "No documents are open"
    5. 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
  • 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.
  • 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!