Nach Speichern soll Makro gelöscht sein

Dieses Thema Nach Speichern soll Makro gelöscht sein im Forum "Microsoft Office Suite" wurde erstellt von studnick, 21. Feb. 2005.

Thema: Nach Speichern soll Makro gelöscht sein Ich möchte, dass ein Makro nur einmalig ausgeführt wird. Sobald das Dokument einmal bearbeitet wurde und mit...

  1. Ich möchte, dass ein Makro nur einmalig ausgeführt wird.
    Sobald das Dokument einmal bearbeitet wurde und mit >Speichern unter..< abgelget wurde, soll das Makro beim erneuten öffnen des Dokumentes nicht mehr ausgeführt werden.

    Gibt es dafür eine Möglichkeit?
    Wäre für Hilfe sehr dankbar

    Gruß studnick
     
  2. Ola,

    Makro per Makro löschen ?

    Such mal in der Hilfe nach den beonderen Namen für Makros
    autoopen,
    autoNew
    autoclose

    Möglcih wäre noch, im Dokument eine Dokumentvariable mit dem Makro anzulegen, und das Makro nur dann auszuführen, wenn die Variable nicht existiert ....
     
  3. Hallo studnick,

    man könnte das folgendermassen lösen:

    im VB-Editor ein Modul zur Arbeitsmappe anlegen und folgenden Code einfügen:
    Code:
    Function CodeZeilenAusDieseArbeitsmappeEntfernen()
      Dim l_cnt As Long
      l_cnt = ActiveWorkbook.VBProject.VBComponents(DieseArbeitsmappe).CodeModule.CountOfLines
      ActiveWorkbook.VBProject.VBComponents(DieseArbeitsmappe).CodeModule.DeleteLines 1, l_cnt
    End Function
    Function MyMakro()
      MsgBox (Hier kann Code vor dem Speichern ausgeführt werden.)
    End Function
    MyMakro ist dein Bearbeitungs-Makro, den Du entsprechend gestalten mußt.
    CodeZeilenAusDieseArbeitsmappeEntfernen ist eine Funktion, die alle Code-Zeilen aus der Code-Seite von->DieseArbeitsmappe entfernt.

    Als dann füge in die Code-Seite von->DieseArbeitsmappe' folgenden Code ein:
    Code:
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
      
     ->Pruefen, ob SaveAs benutzt wurde
      If SaveAsUI Then
        
       ->Pruefen, ob Arbeitsmappe geändert wurde
        If Not ActiveWorkbook.Saved Then
        
          Call MyMakro->Makro für deine Verarbeitung
          Call CodeZeilenAusDieseArbeitsmappeEntfernen
        End If
      End If
    End Sub
    Damit wird das Save-Ereignis abgefangen.
    Geprüft wird, ob es als SaveAs aufgerufen wurde und ob sich in der Arbeitsmappe etwas geändert hat. Wenn ja, wird zunächst dein Makro MyMakro ausgeführt und anschliessend CodeZeilenAusDieseArbeitsmappeEntfernen. Diese entfernt dann die Codezeilen aus->DieseArbeitsmappe' und damit ist der aufrufende Makro weg.

    Gruß Matjes  ;)
     
  4. Ola,

    so unterschiedlich ist eine Frage ohne nähere Angaben interpretierbar: Ich hatte angenommen, er meint Word ....

    Die Idee ist interessant ... wie immer ;)
     
  5. Werd mich für Word auch darum bemühen - hab wohl Kartoffeln auf den Augen gehabt  ;D

    Gruß Matjes  :)
     
  6. Also ohne Änderungsprüfung des Dokuments würde das für Word so aussehen:

    Modul mit gleicher Funktion, aber eben für Word:
    Code:
    Function CodeZeilenAusThisDocumentEntfernen()
      Dim l_cnt As Long
      
      l_cnt = ActiveDocument.VBProject.VBComponents(ThisDocument).CodeModule.CountOfLines
      ActiveDocument.VBProject.VBComponents(ThisDocument).CodeModule.DeleteLines 1, l_cnt
    End Function
    Function MyMakro()
      MsgBox (Hier kann Code vor dem Speichern ausgeführt werden.)
    End Function
    In die Code-Seite von ThisDocument folgendes Makro eingeben:
    Code:
    Private Sub Document_Close()
      
      Const c_NameStandard = Word_ThisDocumentCodezeilenBeiSpeichernLoeschen.doc
      
      If ActiveDocument.Name <> c_NameStandard Then
        Call MyMakro
        Call CodeZeilenAusThisDocumentEntfernen
        ActiveDocument.Save
      End If
    End Sub
    Damit wird das Close-Ereignis abgefangen. Wenn der Documenten-Name nicht dem Wert von c_NameStandard entspricht, wird MyMakro und dann CodeZeilenAusThisDocumentEntfernen und entfernt die Code-Zeilen aus->ThisDocument'.
    (in c_NameStandard  muß natürlich der richtige Dateiname eingetragen werden, sonst führt der Makro immer das Löschen aus  ;D )

    Prüfung auf Änderung ist noch ein anderes Thema :'(

    Gruß Matjes  :)
     
  7. ;D Hallo ihr lieben, :D
    ja ist ein Word Dokument.
    Ihr seid einfach genial, funktioniert super!!!
    ABER: ihr seid zu genial! 8)

    Das Makro macht genau das was es soll, es löscht das Makro.
    Allerdings schon während ich es bearbeite, also das alte Makro überarbeite. Speicher ich dann die Änderung, wird das Makro schon nicht mehr ausgeführt.
    Zum Problem: Das Dokument soll ins Intranet gestellt werden, wird es von dort geöffnet, soll das Makro ausgeführt werden. Wird das bearbeitete Dokument dann gespeichert und erneut geöffnet, soll das Makro gelöscht sein, so wie die funktion es schon erledigt. Aber halt erst nach dem ersten öffnen!!

    Help, I need somebody...help :'(

    Gruß vom studnick
     
  8. Hi studnick,

    in dieser Zeile muß der Dateiname angepaßt werden !

    Code:
    Const c_NameStandard = Word_ThisDocumentCodezeilenBeiSpeichernLoeschen.doc
    Wenn der so lautet, wie die Datei heißt, passiert nix  ;D
    Dann kannst Du auch in Ruhe deinen Makro editieren.

    Du kannst auch den Aufruf des Löschmakros solange auskommentieren, bis Du dir sicher bist, daß alles andere läuft.
    Einfach ein Apostroph vor
    Code:
    Call CodeZeilenAusThisDocumentEntfernen
    Gruß Matjes  ;)
     
  9. gibt es eine Funktion, die bezweckt, dass ne Funktion im Makromodul erst dann gestartet wird, wenn der User dia Aktion speichern oder speichern unter ausführt?

    Gruß Studnick
     
  10. Hi studnick,

    also mir ist keine bekannt. :'(

    Bis jetzt hab ich auch noch nichts dazu gefunden.

    Gruß Matjes :)
     
Die Seite wird geladen...

Nach Speichern soll Makro gelöscht sein - Ähnliche Themen

Forum Datum
Outlook Formular Scripting wird nach speichern nicht mehr ausgeführt Windows XP Forum 29. Okt. 2012
nach Makro Ausführung "speichern unter" vorgeben Microsoft Office Suite 20. Apr. 2010
Nachteile durch prinzipielles Abspeichern von DOC-Dateien in Office 2007? Windows XP Forum 31. Mai 2009
mp3DirectCut- doppelte Nachfragen beim Speichern Windows XP Forum 15. Jan. 2009
GoogleMail - Nachrichten speichern (herunterladen) Windows XP Forum 15. Dez. 2007