Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Automatisches Zwischenspeichern funktioniert nicht wirklich

Frage Microsoft Microsoft Office

Mitglied: el3ment

el3ment (Level 1) - Jetzt verbinden

07.10.2009 um 16:02 Uhr, 7360 Aufrufe, 11 Kommentare

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.
Mitglied: Logan000
07.10.2009 um 16:46 Uhr
Moin Moin

Ich denke das Excel, wenn Du das Speichern verneinst, diese Änderungen (*.xra) verwirft.
Wenn du das Autospeichern testen möchtest, warte bis die .xra datei existiert und schieß Excel über TaskManager ab.

Gruß L.
Bitte warten ..
Mitglied: el3ment
07.10.2009 um 16:54 Uhr
So könnte es funktionieren aber das ist ja eigentlich nicht ganz Sinn und Zweck der Funktion, oder!?
Ich hatte z.B. vorhin so einen Fall das jemand Excel einfach geschlossen hat und versehentlich auf "Nein" gedrückt hat beim speichern...!

Man kann ja nicht davon ausgehen das immer Excel komplett abschmiert oder der Rechner sodass die *.xra Datei nicht gelöscht wird....!
Das kann es ja nicht wirklich sein!?
Bitte warten ..
Mitglied: 76109
07.10.2009 um 19:32 Uhr
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
Bitte warten ..
Mitglied: el3ment
08.10.2009 um 10:43 Uhr
Jetzt wo du es sagst und ich mir das nochmal genau durch den Kopf gehen lasse wird mir alles klar... "wer lesen kann...."

Da denkt Excel also nur an sich selbst... ;) !

Das wäre noch eine super Zusatzfunktion wenn die Datei auch so gespeichert werden könnte.

Vielen Dank !
Bitte warten ..
Mitglied: 76109
08.10.2009 um 11:16 Uhr
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
Bitte warten ..
Mitglied: el3ment
08.10.2009 um 11:42 Uhr
Das wäre SUPER, suche gerade schon nach sowas weil ich nicht wirklich Ahnung habe von Makros erstellen....!
Bitte warten ..
Mitglied: 76109
08.10.2009 um 13:20 Uhr
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.
01.
Option Explicit 
02.
 
03.
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
04.
    Dim wkb As Workbook 
05.
    Set wkb = ThisWorkbook 
06.
    If wkb.Saved = False Then wkb.SaveCopyAs (wkb.FullName & ".bak") 
07.
End Sub
Gruß Dieter
Bitte warten ..
Mitglied: el3ment
08.10.2009 um 13:32 Uhr
Vielen Dank, funktioniert einwandfrei!

Kann man das so einbauen das dies auch passiert wenn man Excel normal startet und nicht explizit diese Mappe ? Das wäre noch die Kirsche auf der Torte... !
Bitte warten ..
Mitglied: 76109
08.10.2009 um 13:56 Uhr
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
Bitte warten ..
Mitglied: el3ment
08.10.2009 um 14:01 Uhr
Das wäre ganz große Klasse!

Vielen Dank schonmal bis hier her!
Bitte warten ..
Mitglied: 76109
11.10.2009 um 02:34 Uhr
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


Was für Möglichkeiten gibt es:

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
  • 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.


Folgende Meldungen werden generiert
  • 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:
01.
Option Explicit 
02.
 
03.
Const BoxWidth = 700 
04.
Const BoxHeight = 400 
05.
 
06.
Const FontType = "Arial" 
07.
Const FontSize = 13 
08.
 
09.
Const Col1Width = 230 
10.
 
11.
Const BackColor = "#F0F0F0" 
12.
 
13.
Const Mld1 = "Argumente fehlen..." 
14.
Const Msg1 = "Es wurden keine Argumente übergeben!"  
15.
 
16.
Const Log0 = "Erstellt am " 
17.
Const Log1 = "Mappe: Konnte nicht geöffnet werden" 
18.
Const Log2 = "Mappe: Konnte nur gelesen werden" 
19.
Const Log3 = "Mappe: Falsches Format oder defekt" 
20.
Const Log4 = "Makro: Wurde erfolgreich erstellt" 
21.
Const Log5 = "Makro: Hatte bereits existiert" 
22.
 
23.
Const Color0 = "#00008B"  'Blue1 
24.
Const Color1 = "#FF1010"  'Red1 
25.
Const Color2 = "#7A378B"  'Violet1 
26.
Const Color3 = "#FF1010"  'Red1 
27.
Const Color4 = "#006400"  'Green1 
28.
Const Color5 = "#006400"  'Green1 
29.
 
30.
'   Red1 = "#FF1010"		 
31.
'   Red2 = "#FF2020" 
32.
'  Blue1 = "#00008B" 
33.
'  Blue2 = "#473C8B" 
34.
' Green1 = "#006400" 
35.
' Green2 = "#008B00" 
36.
'Violet1 = "#7D26CD" 
37.
'Violet2 = "#7A378B" 
38.
'Orange1 = "#FF8C00" 
39.
 
40.
 
41.
Dim Arg, Args, Fso, Folder, File, Path, Excel, Wkb, Log, Shell 
42.
 
43.
 
44.
    Set Excel = CreateObject("Excel.Application") 
45.
    Set Fso = CreateObject("Scripting.FileSystemObject") 
46.
 
47.
    Call OpenLog  
48.
 
49.
    For Each Arg In WScript.Arguments 
50.
        If LCase(Right(Arg, 4)) = ".xls" Then 
51.
            Args = True:  Call CreateExcelMakro(Arg) 
52.
        ElseIf Fso.FolderExists(Arg) Then 
53.
            Args = True:  Set Folder = Fso.GetFolder(Arg) 
54.
            For Each File In Folder.Files 
55.
                If LCase(Right(File, 4)) = ".xls" Then Call CreateExcelMakro(File.Path) 
56.
            Next 
57.
        End If 
58.
    Next 
59.
 
60.
    Set Excel = Nothing   
61.
 
62.
    If Args = True Then Call ShowLog Else MsgBox Msg1, vbInformation, Mld1 
63.
     
64.
    Wscript.Quit 
65.
 
66.
Sub CreateExcelMakro(ByRef File) 
67.
    Dim vba1, vba2 
68.
 
69.
    vba1 = "Private Sub Workbook_BeforeClose(Cancel As Boolean)" & vbCr & vbTab & "If ThisWorkbook.Saved = " 
70.
    vba2 = "False Then ThisWorkbook.SaveCopyAs(ThisWorkbook.FullName & "".bak"")" & vbCr & "End Sub" & vbCr 
71.
 
72.
    On Error Resume Next 
73.
     
74.
    Set Wkb = Excel.Workbooks.Open(File) 
75.
     
76.
    If Wkb Is Nothing Then 
77.
        Call WriteLog(Log1, File, Color1) 
78.
    Else 
79.
        With Wkb.VBProject.VBComponents(1).CodeModule 
80.
            If IsEmpty(.ProcBodyLine("Workbook_BeforeClose", 0)) Then 
81.
                Err.Clear 
82.
                If Wkb.ReadOnly = True Then 
83.
                    Call WriteLog(Log2, File, Color2) 
84.
                Else 
85.
                   .AddFromString vba1 & vba2:  If Err = 0 Then Wkb.Save 
86.
                    If Wkb.Saved = False Then Call WriteLog(Log3, File, Color3) Else Call WriteLog(Log4, File, Color4) 
87.
                End If 
88.
            Else 
89.
                Call WriteLog(Log5, File, Color5) 
90.
            End If 
91.
        End With 
92.
        Excel.DisplayAlerts = False:  Wkb.Close:  Excel.DisplayAlerts = True:  Set Wkb = Nothing 
93.
    End If 
94.
End Sub 
95.
 
96.
Private Sub OpenLog() 
97.
    Path = Fso.GetParentFolderName(WScript.ScriptFullName) & "\Log.Hta" 
98.
    Set Log = Fso.CreateTextFile(Path) 
99.
 
100.
    With Log 
101.
        .WriteLine "<html>" 
102.
        .WriteLine "<head>" 
103.
        .WriteLine "<title>Zusammenfassung</title>" 
104.
        .WriteLine "<SCRIPT Language='VBScript'>" 
105.
        .WriteLine "BoxLeft = (Screen.Width - " & BoxWidth & ") / 2"  
106.
        .WriteLine "BoxTop = (Screen.Height - " & BoxHeight & ") / 2"  
107.
        .WriteLine "window.resizeTo " & BoxWidth & ", " & BoxHeight 
108.
        .WriteLine "window.moveTo BoxLeft, BoxTop" 
109.
        .WriteLine "</SCRIPT>" 
110.
        .WriteLine "<HTA:APPLICATION"  
111.
        .WriteLine "ID='objLog'" 
112.
        .WriteLine "APPLICATIONNAME='Log-Ausgabe'" 
113.
        .WriteLine "SCROLL='yes'" 
114.
        .WriteLine "SINGLEINSTANCE='yes'>" 
115.
        .WriteLine "<body bgcolor='" & BackColor & "' style='font-family:" & FontType & ";font-size:" & FontSize & "px'>" 
116.
        .WriteLine "<font color='" & Color0 & "'>" & Log0 & Now & "</font><br><br>" 
117.
        .WriteLine "<table width='100%' cellSpacing=1 border=1 style='font-family:" & FontType & ";font-size:" & FontSize & "px'>"  
118.
    End With 
119.
End Sub 
120.
 
121.
Private Sub WriteLog(ByRef Text, ByRef File, ByRef Color) 
122.
    Log.WriteLine "<tr><td width='" & Col1Width & "' style='color=" & Color & "'>" & Text & "</td><td style='color=0'>" & File & "</td></tr>" 
123.
End Sub 
124.
 
125.
Private Sub ShowLog() 
126.
    Log.WriteLine "</table></body></html>":  Log.Close 
127.
    Set Shell = CreateObject("Wscript.Shell"):  Shell.Run Path, 1, False 
128.
End Sub
Gruß Dieter
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Erkennung und -Abwehr
Großstörung bei der Telekom: Was wirklich geschah (3)

Link von Frank zum Thema Erkennung und -Abwehr ...

Linux
LTSP: PXE Boot funktioniert nicht (22)

Frage von Fenris14 zum Thema Linux ...

Virtualisierung
Drucker aus einer VM heraus funktioniert nicht (5)

Frage von NCCTech zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...