Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ActiveWorkbook.Saved = True

Forumthread: ActiveWorkbook.Saved = True

ActiveWorkbook.Saved = True
13.02.2008 14:33:00
peter
hallo,
ActiveWorkbook.Saved = True
funktioniert leider nicht!? habe ein komplexes makro, das dateien öffnet, einiges einträgt, ändert und zum schluss die mappe auf "gespeichert" setzen soll.
das ganze funktioniert, wenn ich einen haltepunkt bei "ActiveWorkbook.Saved = True" setze und dann mit "F5" weitermache, aber sobald es ohne diesen stopp läuft, geht es nicht.
hat jemand einen tipp?
vielen dank,

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ActiveWorkbook.Saved = True
13.02.2008 14:40:14
Renee
Hi Peter,
Welcher Code kommt den nach deinem ActiveWorkbook.Saved = True Befehl ?
Wenn da nämlich weitere Änderungen gemacht werden, ist das obige für die Katz.
GreetZ Renée

AW: ActiveWorkbook.Saved = True
13.02.2008 14:55:00
peter
da kommt natürlich nichts mehr, das die mappe verändern könnte, sonst würde es ja auch mit "F5" nicht gehen!

Anzeige
AW: ActiveWorkbook.Saved = True
13.02.2008 15:00:37
Rudi
Hallo,

sonst würde es ja auch mit "F5" nicht gehen!


das ist nicht unbedingt richtig. Falls die Prozedur durch eine andere aufgerufen wird, die wiederum nach Beenden Änderungen bewirkt, ist .saved hinfällig. Wohingegen der alleinige Aufruf der Prozedur mit F5 durchaus erfolgreich sein kann.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: ActiveWorkbook.Saved = True
13.02.2008 15:24:00
peter
durch betätigen von "F5" nach der stoppmarke laufen auch die anderen prozeduren zu ende, also damit meine ich, dass ich nicht die problemprozedur alleine laufen lasse, sondern alles.
unabhängig davon, es kommt ausser End If - Me.Hide - Exit Sub, etc. nichts mehr, das die mappe verändert...sonst würde ich hier auch nicht posten, wenn es so einfach wäre...

Anzeige
AW: ActiveWorkbook.Saved = True
13.02.2008 16:35:00
Heinz
Hi,
ist das ActiveWorkbook das, in dem der Code abläuft?
Am besten, Mappe hochladen.
mfg heinz

AW: ActiveWorkbook.Saved = True
13.02.2008 17:26:00
peter
nein, es handelt sich um ein addinn, das eine bestimmte datei, die vorher im userform ausgewählt wurde öffnet, daten einträgt und dann eben auf saved=true stellen sollte. habe es auch schon probiert, den namen der datei direkt einzusetzten (workbooks(xy).saved=true), aber das phänomen bleibt bestehen.
mappe hochladen bringt leider nichts.
kurze beschreibung:
durch doppelklick eines listeintrages im userform wird "Open_PZL" aufgerufen und öffnet die datei, etc.
dann kommt besagte Stelle:
hier der abgespeckte code:

Private Sub Art_Info()
With U_1
.Show
End With
End Sub



Private Sub l_dat_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If Left(U_1.l_dat.Value, 9) = "g:\daten\" Then
Call Open_PZL(U_1.l_dat.Value)
Me.Hide
End If
End Sub



Private Sub Open_PZL(Optional fileToOpen As String)
Workbooks.Open Filename:=fileToOpen, UpdateLinks:=True
Call Get_Compo_Back(Right(Sheets("COMPO").Cells(2, 3).Value, 4))
Call Check_Autors 'Autorisierung vorhanden?
Call CheckRS
Call MANUF_Layout 'Seitenumbruch
Call Check_Sheets(100) 'Quersumme bilden beim öffnen
Call Open_Notiz 'Notiz einblenden, wenn unter aktuell
Call Create_Module 'Modul einfügen
Call OptionsfeldGebinde ' Optionsfelder einfügen
ActiveWorkbook.Saved = True
End Sub


Anzeige
AW: ActiveWorkbook.Saved = True
14.02.2008 07:56:33
luc
Die Excel-Hilfe sagt zu dem Befehl:
"True, wenn die angegebene Arbeitsmappe seit dem letzten Speichern nicht geändert wurde. Boolean-Wert mit Lese-/Schreibzugriff."
Willst Du denn die Mappe speichern oder nur den Status auf gespeichert setzen? Wenn ersteres, streiche doch einfach das "d" bei Saved. ActiveWorkbook.Save:=True speichert das Ding, dann sollte .Saved auch True sein.

Anzeige
AW: ActiveWorkbook.Saved = True
14.02.2008 08:48:11
peter
das hilft mir leider nicht weiter, die datei darf nicht gespeichert werden...
ich brauch die info ob sich was geändert hat um weitere aktionen zu steuern, die nur erlaubt sind, wenn der user keine daten verändert hat.

AW: ActiveWorkbook.Saved = True
14.02.2008 10:18:00
Renee
Hi Peter,
ich brauch die info ob sich was geändert hat um weitere aktionen zu steuern
steht aber diametral deinem Code gegenüber. Dein Code setzt ja ohne Prüfung den Status so, "das nichts geändert hat".
Ein Abfrage wäre also einfach:

MsgBox IIf(ActiveWorkbook.Saved, "nix geändert", "geändert")


GreetZ Renée

Anzeige
AW: ActiveWorkbook.Saved = True
14.02.2008 11:04:12
peter
zum verständnis:
es wird eine datei geöffnet, von der prozedur angepasst und somit verändert. deshalb will ich die datei (ohne zu speichern) auf den status gespeichert setzen um später, wenn der user andere prozeduren ausführt, zu prüfen, ob in der zwischenzeit vom user etwas verändert wurde.
d.h. sobald die datei geöffnet ist und dem user zur verfügung steht, sollte sie "jungfreulich" sein, aber da ist das problem!
vielen dank soweit,
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

ActiveWorkbook.Saved = True: Probleme und Lösungen


Schritt-für-Schritt-Anleitung

Um den Status der Arbeitsmappe in Excel VBA auf "gespeichert" zu setzen, kannst du den folgenden Code verwenden:

ActiveWorkbook.Saved = True

Dieser Befehl setzt den Status von ActiveWorkbook auf "gespeichert", ohne die Datei tatsächlich zu speichern. Wenn du diesen Befehl in einem komplexen Makro verwenden möchtest, achte darauf, dass keine weiteren Änderungen an der Arbeitsmappe vorgenommen werden, nachdem dieser Befehl ausgeführt wurde.

  1. Öffne dein VBA-Editor (ALT + F11).
  2. Füge den Befehl ActiveWorkbook.Saved = True an die gewünschte Stelle in deinem Code ein.
  3. Stelle sicher, dass keine weiteren Operationen den Status der Arbeitsmappe nach diesem Befehl verändern.

Häufige Fehler und Lösungen

  • Problem: ActiveWorkbook.Saved = True funktioniert nicht.

    • Lösung: Überprüfe, ob nach dem Befehl noch weitere Änderungen an der Arbeitsmappe vorgenommen werden. Wenn ja, wird der Status nicht beibehalten.
  • Problem: Der Code bricht bei der Ausführung ab.

    • Lösung: Stelle sicher, dass dein VBA-Projekt keine Fehler enthält und alle verwendeten Funktionen und Variablen korrekt definiert sind.
  • Problem: Der Status wird nicht als "gespeichert" erkannt.

    • Lösung: Verwende zusätzlich eine Abfrage, um zu prüfen, ob Änderungen vorgenommen wurden, bevor du den Status setzt:
If Not ActiveWorkbook.Saved Then
    ActiveWorkbook.Saved = True
End If

Alternative Methoden

Falls du die Arbeitsmappe tatsächlich speichern möchtest, kannst du folgende Befehle verwenden:

  • Speichern der aktiven Arbeitsmappe:
ActiveWorkbook.Save
  • Speichern unter einem neuen Namen:
ActiveWorkbook.SaveAs Filename:="NeuerPfad\Dateiname.xlsx"
  • Speichern der Arbeitsmappe ohne den Status zu ändern:

Wenn du den Status auf "gespeichert" setzen möchtest, ohne die Datei zu speichern, bleibt ActiveWorkbook.Saved = True die beste Wahl.


Praktische Beispiele

Hier ist ein vollständiges Beispiel, das zeigt, wie man eine Datei öffnet, Änderungen vornimmt und den Status auf "gespeichert" setzt:

Private Sub Open_PZL(Optional fileToOpen As String)
    Workbooks.Open Filename:=fileToOpen, UpdateLinks:=True
    ' Führe hier deine Änderungen durch
    ActiveWorkbook.Saved = True ' Setze den Status auf "gespeichert"
End Sub

Stelle sicher, dass fileToOpen den richtigen Pfad zur Datei enthält.


Tipps für Profis

  • Verwende ThisWorkbook.Saved, wenn du den Status der aktuellen Arbeitsmappe in einem Modul überprüfen möchtest.
  • Nutze Workbook.SaveCopyAs für das Erstellen einer Kopie der Arbeitsmappe, ohne die Originaldatei zu verändern.
  • Überlege, ob du eine Prozedur zur Überprüfung des Status vor dem Setzen von ActiveWorkbook.Saved benötigst, um unerwartete Verhaltensweisen zu vermeiden.

FAQ: Häufige Fragen

1. Warum funktioniert ActiveWorkbook.Saved = True nicht?
Wenn nach diesem Befehl Änderungen an der Arbeitsmappe vorgenommen werden, wird der Status nicht beibehalten. Stelle sicher, dass keine weiteren Änderungen erfolgen.

2. Was passiert, wenn ich ActiveWorkbook.Save und ActiveWorkbook.Saved = True zusammen verwende?
ActiveWorkbook.Save speichert die Datei, während ActiveWorkbook.Saved = True nur den Status ändert. Verwende sie nicht zusammen, um Verwirrung zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige