Automatisches Zwischenspeichern funktioniert nicht wirklich
Hallo,
hat von euch jemand Erfahrung mit der automatischen Zwischenspeicherung von Excel ?
Ich teste es gerade mal aus unter Windows XP Pro mit Office 2003....!
Habe die automatische Zwischenspeicherung unter Extras -> Optionen -> Speichern eingestellt, als Zeitangabe habe ich 1 Minute eingestellt.
Die Zwischenkopie wird unter %appdata%\microsoft\excel\ abgelegt, während Excel offen ist und man bearbeitet eine Mappe wird in der angegebenen Zeit eine *.xra Datei angelegt und aktualisiert. Schliesst man nun Excel ohne zu speichern verschwindet die *.xra Datei und es wird eine Excel11.xlb erstellt.
Wenn ich diese Datei öffne, öffnet sich eine leere Mappe! Nun habe ich mal getestet bevor Excel geschlossen wird die *.xra-Datei wegzukopieren, dann habe ich Excel geschlossen ohne zu speichern, die xlb-Datei ist wieder wertlos aber dir wegkopierte *.xra Datei enthaält alle Daten, das ist also die eigentliche Kopie welche alle Daten enthält - Warum wird diese aber gelöscht sobald Excel geschlossen wird bzw. warum steht in der Excel11.xlb nichts ?
Habt Ihr dasselbe Problem oder ist es ein Konfigurationsproblem?
Wäre super wenn es jemand mal so nachstellen kann udn schaut ob dasselbe passiert...!
Vielen Dank schonmal.
hat von euch jemand Erfahrung mit der automatischen Zwischenspeicherung von Excel ?
Ich teste es gerade mal aus unter Windows XP Pro mit Office 2003....!
Habe die automatische Zwischenspeicherung unter Extras -> Optionen -> Speichern eingestellt, als Zeitangabe habe ich 1 Minute eingestellt.
Die Zwischenkopie wird unter %appdata%\microsoft\excel\ abgelegt, während Excel offen ist und man bearbeitet eine Mappe wird in der angegebenen Zeit eine *.xra Datei angelegt und aktualisiert. Schliesst man nun Excel ohne zu speichern verschwindet die *.xra Datei und es wird eine Excel11.xlb erstellt.
Wenn ich diese Datei öffne, öffnet sich eine leere Mappe! Nun habe ich mal getestet bevor Excel geschlossen wird die *.xra-Datei wegzukopieren, dann habe ich Excel geschlossen ohne zu speichern, die xlb-Datei ist wieder wertlos aber dir wegkopierte *.xra Datei enthaält alle Daten, das ist also die eigentliche Kopie welche alle Daten enthält - Warum wird diese aber gelöscht sobald Excel geschlossen wird bzw. warum steht in der Excel11.xlb nichts ?
Habt Ihr dasselbe Problem oder ist es ein Konfigurationsproblem?
Wäre super wenn es jemand mal so nachstellen kann udn schaut ob dasselbe passiert...!
Vielen Dank schonmal.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 126651
Url: https://administrator.de/contentid/126651
Ausgedruckt am: 26.11.2024 um 02:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo el3ment!
Das Zwischenspeichern ist eine reine AutoWiederherstellungs-Funktion und bei den Einstellungen auch als solche angegeben. Sie ist tatsächlich nur dafür gedacht, die Datei wiederherzustellen, falls Excel wegen eines Ausnahmefehlers geschlossen wird/wurde. D.h. Du hast den Sinn des ganzen offensichtlich falsch verstanden und solltest den Fehler nicht bei Excel suchen
Wenn der Anwender die Frage zum speichern verneint, dann hat er wohl oder übel Pech gehabt
Abhilfe könnte ein Makro schaffen, dass die Datei entgegen der Anweisung des Anwenders trotzdem speichert oder eventuell bis zu 5 mal nachfragt, ob denn nun wirklich nicht gespeichert werden soll oder beim verneinen eine *.bak-Datei anlegt. Um Anwenderfehler weitgehenst auszuschließen, gibt es unzählige Möglichkeiten.
Gruß Dieter
Das Zwischenspeichern ist eine reine AutoWiederherstellungs-Funktion und bei den Einstellungen auch als solche angegeben. Sie ist tatsächlich nur dafür gedacht, die Datei wiederherzustellen, falls Excel wegen eines Ausnahmefehlers geschlossen wird/wurde. D.h. Du hast den Sinn des ganzen offensichtlich falsch verstanden und solltest den Fehler nicht bei Excel suchen
Wenn der Anwender die Frage zum speichern verneint, dann hat er wohl oder übel Pech gehabt
Abhilfe könnte ein Makro schaffen, dass die Datei entgegen der Anweisung des Anwenders trotzdem speichert oder eventuell bis zu 5 mal nachfragt, ob denn nun wirklich nicht gespeichert werden soll oder beim verneinen eine *.bak-Datei anlegt. Um Anwenderfehler weitgehenst auszuschließen, gibt es unzählige Möglichkeiten.
Gruß Dieter
Hallo el3ment!
Mit einem Makro ist es sehr einfach, beim Verneinen eine *.bak-Datei zu speichern. Falls Du ein solches haben möchtest, gib mir Bescheid
Gruß Dieter
Mit einem Makro ist es sehr einfach, beim Verneinen eine *.bak-Datei zu speichern. Falls Du ein solches haben möchtest, gib mir Bescheid
Gruß Dieter
Hallo el3ment!
Führe in einer Excel-Datei folgende Schritte aus:
1. <Menu><Extras><Makro><Visual Basic Editor>
2. <Diese Arbeitsmappe Doppelklick><Quelltext Einfügen>
3. <VB-Editor schließen><Excel-Datei Speichern>
Im Anschluss wird jedesmal beim Verneinen des Speicherns, die Datei mit der Endung *.xls.bak gespeichert/überschrieben.
Gruß Dieter
Führe in einer Excel-Datei folgende Schritte aus:
1. <Menu><Extras><Makro><Visual Basic Editor>
2. <Diese Arbeitsmappe Doppelklick><Quelltext Einfügen>
3. <VB-Editor schließen><Excel-Datei Speichern>
Im Anschluss wird jedesmal beim Verneinen des Speicherns, die Datei mit der Endung *.xls.bak gespeichert/überschrieben.
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim wkb As Workbook
Set wkb = ThisWorkbook
If wkb.Saved = False Then wkb.SaveCopyAs (wkb.FullName & ".bak")
End Sub
Gruß Dieter
Hallo el3ment!
Daran habe ich auch schon gedacht und es müsste über die Start *.xla-Dateien gehen. Aber da hatte ich bisher nix mit zu tun und im Moment fehl mir die Zeit dafür, um das mal auszutesten. Ich behalte es aber mal im Auge und poste die Lösung, sofern ich den eine finde
Gruß Dieter
Daran habe ich auch schon gedacht und es müsste über die Start *.xla-Dateien gehen. Aber da hatte ich bisher nix mit zu tun und im Moment fehl mir die Zeit dafür, um das mal auszutesten. Ich behalte es aber mal im Auge und poste die Lösung, sofern ich den eine finde
Gruß Dieter
Hallo el3ment!
Tja,, hat leider ein bisschen gedauert
Also, ich denke, dass ich so ziemlich alle Möglichkeiten abgeklappert und eigentlich nichts brauchbares gefunden habe
AddIns (*.xla)
Mein erster Gedanke war ein AddIn (*.xla). Die Erstellung ist recht simpel, nützt in unserem Fall aber garnix, weil Ereigniss-Prozeduren entweder schon vor dem Öffnen oder erst nach nach dem Schließen einer Arbeitsmappe ausgeführt werden. D.h. die Mappe ist enweder noch nicht geöffnet oder schon geschlossen. AddIns machen also nur Sinn, um häufig verwendete Funktionen bereitzustellen.
XLStart (*.xls)
Da gibt es einen Ordner, der nennt sich XLStart und in diesen Ordner kann eine Vorlage.xls eingefügt werden. Wenn man Excel dann direkt startet, wird auch tatsächlich diese Vorlage geöffnet. Soweit so gut. Nun Klicke ich aber z.B. auf das Symbol <NEU>, dann bekomme ich schon wieder eine stinknormale Leere Mappe. Der Hammer ist jedoch, dass wenn ich eine existierende Arbeitsmappe öffne, dann werden die Arbeitsmappe und zusätzlich noch die Vorlage geöffnet *Kopfschüttel*?
Mustervorlage (*.xlt)
Dann bleiben noch zwei brauchbare Möglichkeiten über den <Ansicht><Aufgabenbereich> übrig, wobei ich mich frage, ob das überhaupt jemand nutzt. Na, jedenfalls kann man hier eine Vorlage.xls mit <Speichern unter> als <Mustervorlage *.xlt> abspeichern. Diese Vorlage befindet sich dann im Ordner
<D:\Dokumente_und_Einstellungen\User\Anwendungsdaten\Microsoft\Vorlagen> und wird dann über <Allgemeine Vorlagen> ausgewählt.
Mustervorlage (*.xls)
Die andere Möglichkeit ist auch wieder <Ansicht><Aufgabenbereich><Neu aus vorhandener Arbeitsmappe>. Hier kann die Vorlage.xls in den Startordner abgelegt werden. Siehe <Extras><Optionen><Allgemein><Standardspeicherort>
Script für komfortablen Makro-Import
So, und damit Du jetzt nicht jede Excel-Datei einzeln öffnen, Makro einfügen und wieder speichern musst, habe ich Dir ein kleines Script geschrieben, mit dem Du das Ganze eigenlich recht komfortabel umsetzen kannst. D.h. Du kannst eine Verknüpfung auf dem Desktop, auf der Schnell-Startleiste (sofern eingerichtet) und im SendTo-Ordner <D:\Dokumente und Einstellungen\User\SendTo> erstellen und *.xls-Dateien oder ganze Ordner auf die Verknüfung ziehen oder mit Rechtsklick per SendTo an das Script übergeben. Oder per Batch <cscript /nologo *.vbs arg...) Allerdings ist zu beachten, das nur maximal 40 Argumente an das Script übergeben werden dürfen. Bei mehr passiert nix und es gibt ne Fehlermeldung.
Funktion des Scripts
Folgende Meldungen werden generiert
Diesen Quelltext in x-beliebigen Ordner unter *.vbs abspeichern und testen:
Gruß Dieter
Tja,, hat leider ein bisschen gedauert
Also, ich denke, dass ich so ziemlich alle Möglichkeiten abgeklappert und eigentlich nichts brauchbares gefunden habe
Was für Möglichkeiten gibt es:
Mein erster Gedanke war ein AddIn (*.xla). Die Erstellung ist recht simpel, nützt in unserem Fall aber garnix, weil Ereigniss-Prozeduren entweder schon vor dem Öffnen oder erst nach nach dem Schließen einer Arbeitsmappe ausgeführt werden. D.h. die Mappe ist enweder noch nicht geöffnet oder schon geschlossen. AddIns machen also nur Sinn, um häufig verwendete Funktionen bereitzustellen.
Da gibt es einen Ordner, der nennt sich XLStart und in diesen Ordner kann eine Vorlage.xls eingefügt werden. Wenn man Excel dann direkt startet, wird auch tatsächlich diese Vorlage geöffnet. Soweit so gut. Nun Klicke ich aber z.B. auf das Symbol <NEU>, dann bekomme ich schon wieder eine stinknormale Leere Mappe. Der Hammer ist jedoch, dass wenn ich eine existierende Arbeitsmappe öffne, dann werden die Arbeitsmappe und zusätzlich noch die Vorlage geöffnet *Kopfschüttel*?
Dann bleiben noch zwei brauchbare Möglichkeiten über den <Ansicht><Aufgabenbereich> übrig, wobei ich mich frage, ob das überhaupt jemand nutzt. Na, jedenfalls kann man hier eine Vorlage.xls mit <Speichern unter> als <Mustervorlage *.xlt> abspeichern. Diese Vorlage befindet sich dann im Ordner
<D:\Dokumente_und_Einstellungen\User\Anwendungsdaten\Microsoft\Vorlagen> und wird dann über <Allgemeine Vorlagen> ausgewählt.
Die andere Möglichkeit ist auch wieder <Ansicht><Aufgabenbereich><Neu aus vorhandener Arbeitsmappe>. Hier kann die Vorlage.xls in den Startordner abgelegt werden. Siehe <Extras><Optionen><Allgemein><Standardspeicherort>
So, und damit Du jetzt nicht jede Excel-Datei einzeln öffnen, Makro einfügen und wieder speichern musst, habe ich Dir ein kleines Script geschrieben, mit dem Du das Ganze eigenlich recht komfortabel umsetzen kannst. D.h. Du kannst eine Verknüpfung auf dem Desktop, auf der Schnell-Startleiste (sofern eingerichtet) und im SendTo-Ordner <D:\Dokumente und Einstellungen\User\SendTo> erstellen und *.xls-Dateien oder ganze Ordner auf die Verknüfung ziehen oder mit Rechtsklick per SendTo an das Script übergeben. Oder per Batch <cscript /nologo *.vbs arg...) Allerdings ist zu beachten, das nur maximal 40 Argumente an das Script übergeben werden dürfen. Bei mehr passiert nix und es gibt ne Fehlermeldung.
- Es wird explizit geprüft, ob es sich um eine *.xls-Datei handelt. D.h. Ordner dürfen auch andere Dateien beinhalten.
- Die Dateien werden nicht sichtbar geöffnet.
- Die Dateien werden auf verschiedene Kriterien geprüft und dem entsprechend das Makro eingefügt oder auch nicht.
- Die jeweiligen Aktionen werden in einer Log-File ptotokolliert und am Ende übersichtlich in einem Fenster angezeigt.
- Mappe konnte nicht geöffnet werden
- Mappe konnte nur gelesen werden (ReadOnly) schreibgeschützt, gesperrt...
- Mappe falsches Format oder defekt
- Makro wurde erfolgreich erstellt
- Makro hatte bereits existiert
Diesen Quelltext in x-beliebigen Ordner unter *.vbs abspeichern und testen:
Option Explicit
Const BoxWidth = 700
Const BoxHeight = 400
Const FontType = "Arial"
Const FontSize = 13
Const Col1Width = 230
Const BackColor = "#F0F0F0"
Const Mld1 = "Argumente fehlen..."
Const Msg1 = "Es wurden keine Argumente übergeben!"
Const Log0 = "Erstellt am "
Const Log1 = "Mappe: Konnte nicht geöffnet werden"
Const Log2 = "Mappe: Konnte nur gelesen werden"
Const Log3 = "Mappe: Falsches Format oder defekt"
Const Log4 = "Makro: Wurde erfolgreich erstellt"
Const Log5 = "Makro: Hatte bereits existiert"
Const Color0 = "#00008B" 'Blue1
Const Color1 = "#FF1010" 'Red1
Const Color2 = "#7A378B" 'Violet1
Const Color3 = "#FF1010" 'Red1
Const Color4 = "#006400" 'Green1
Const Color5 = "#006400" 'Green1
' Red1 = "#FF1010"
' Red2 = "#FF2020"
' Blue1 = "#00008B"
' Blue2 = "#473C8B"
' Green1 = "#006400"
' Green2 = "#008B00"
'Violet1 = "#7D26CD"
'Violet2 = "#7A378B"
'Orange1 = "#FF8C00"
Dim Arg, Args, Fso, Folder, File, Path, Excel, Wkb, Log, Shell
Set Excel = CreateObject("Excel.Application")
Set Fso = CreateObject("Scripting.FileSystemObject")
Call OpenLog
For Each Arg In WScript.Arguments
If LCase(Right(Arg, 4)) = ".xls" Then
Args = True: Call CreateExcelMakro(Arg)
ElseIf Fso.FolderExists(Arg) Then
Args = True: Set Folder = Fso.GetFolder(Arg)
For Each File In Folder.Files
If LCase(Right(File, 4)) = ".xls" Then Call CreateExcelMakro(File.Path)
Next
End If
Next
Set Excel = Nothing
If Args = True Then Call ShowLog Else MsgBox Msg1, vbInformation, Mld1
Wscript.Quit
Sub CreateExcelMakro(ByRef File)
Dim vba1, vba2
vba1 = "Private Sub Workbook_BeforeClose(Cancel As Boolean)" & vbCr & vbTab & "If ThisWorkbook.Saved = "
vba2 = "False Then ThisWorkbook.SaveCopyAs(ThisWorkbook.FullName & "".bak"")" & vbCr & "End Sub" & vbCr
On Error Resume Next
Set Wkb = Excel.Workbooks.Open(File)
If Wkb Is Nothing Then
Call WriteLog(Log1, File, Color1)
Else
With Wkb.VBProject.VBComponents(1).CodeModule
If IsEmpty(.ProcBodyLine("Workbook_BeforeClose", 0)) Then
Err.Clear
If Wkb.ReadOnly = True Then
Call WriteLog(Log2, File, Color2)
Else
.AddFromString vba1 & vba2: If Err = 0 Then Wkb.Save
If Wkb.Saved = False Then Call WriteLog(Log3, File, Color3) Else Call WriteLog(Log4, File, Color4)
End If
Else
Call WriteLog(Log5, File, Color5)
End If
End With
Excel.DisplayAlerts = False: Wkb.Close: Excel.DisplayAlerts = True: Set Wkb = Nothing
End If
End Sub
Private Sub OpenLog()
Path = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Log.Hta"
Set Log = Fso.CreateTextFile(Path)
With Log
.WriteLine "<html>"
.WriteLine "<head>"
.WriteLine "<title>Zusammenfassung</title>"
.WriteLine "<SCRIPT Language='VBScript'>"
.WriteLine "BoxLeft = (Screen.Width - " & BoxWidth & ") / 2"
.WriteLine "BoxTop = (Screen.Height - " & BoxHeight & ") / 2"
.WriteLine "window.resizeTo " & BoxWidth & ", " & BoxHeight
.WriteLine "window.moveTo BoxLeft, BoxTop"
.WriteLine "</SCRIPT>"
.WriteLine "<HTA:APPLICATION"
.WriteLine "ID='objLog'"
.WriteLine "APPLICATIONNAME='Log-Ausgabe'"
.WriteLine "SCROLL='yes'"
.WriteLine "SINGLEINSTANCE='yes'>"
.WriteLine "<body bgcolor='" & BackColor & "' style='font-family:" & FontType & ";font-size:" & FontSize & "px'>"
.WriteLine "<font color='" & Color0 & "'>" & Log0 & Now & "</font><br><br>"
.WriteLine "<table width='100%' cellSpacing=1 border=1 style='font-family:" & FontType & ";font-size:" & FontSize & "px'>"
End With
End Sub
Private Sub WriteLog(ByRef Text, ByRef File, ByRef Color)
Log.WriteLine "<tr><td width='" & Col1Width & "' style='color=" & Color & "'>" & Text & "</td><td style='color=0'>" & File & "</td></tr>"
End Sub
Private Sub ShowLog()
Log.WriteLine "</table></body></html>": Log.Close
Set Shell = CreateObject("Wscript.Shell"): Shell.Run Path, 1, False
End Sub
Gruß Dieter