Excel-Verhalten beim Speichern - technisches Problem
#1
Hallo Freunde, Fachleute und Experten,
 
ich habe 2002 ein recht umfangreiches Projekt für die Abrechnung der Tagesleistungen einer vegetarischen Restauration in Excel erstellt, welches 4 Kassen mehrmals täglich erfasst, die Tagesumsatzzusammenfassung erstellt, die entsprechenden Bankeinzahlungen vorbereitet sowie ein Kassenbuch und die entsprechenden Unterlagen für das Steuerbüro aufbereitet und per Ausdruck bereitstellt.
 
Dieses Projekt läuft jetzt bereits 14 Jahre einwandfrei (noch immer) unter Excel 2003 und hat den Kontrollen der Finanzbehörden standgehalten. Nun wird jedoch gefordert, dass jeder einzelne Abrechnungsschritt unveränderbar dokumentiert und korrekt nachgewiesen werden kann.
 
Dazu habe ich das Projekt so erweitert, dass jeder Abrechnungsschritt mit Datum, Name und der exakten Uhrzeit (Stunde, Minute, Sekunde) auf einem nur beschreib- und  unveränderbaren USB-Stick archiviert wird - dieser Nachweis wird von der Finanzbehörde anerkannt.
 
Nun aber das Problem:
Dutzende Mal wird dazu ein und dieselbe Routine (nur mit anders belegten Variablen) anstandslos und fehlerfrei durchlaufen und die Daten auf dem USB-Stick gespeichert, aber dann passiert es, das Excel "behauptet" nicht auf den USB-Stick zugreifen zu können und bricht das Makro ab - obwohl noch ausreichend Platz darauf vorhanden ist.
 
In Testläufen mit einem normalen USB-Stick ist dieses Verhalten nie aufgetreten, damit ist Excel immer zurecht gekommen.
 
Woran kann dieses Verhalten liegen und kann man das abstellen bzw. umgehen, denn offensichtlich will bzw. werden bereits gespeicherte Daten von Excel verändert, was natürlich auf dem nur beschreibbaren und nicht veränderbaren USB-Stick nicht geht?
 
Kennt jemand das Problem und hat dazu eine Lösung?
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#2
Nachfrage - niemand eine Idee?

Die betreffende Routine hat folgenden Code:

Code:
Sub USB_sichern()
    Application.ScreenUpdating = False
    LW = UCase(Left(Sheets("Deckblatt").Cells(25, 7), 1))
    Set wsQuelle = ActiveSheet
    Application.SheetsInNewWorkbook = 1
    Set wbZiel = Workbooks.Add
    wsQuelle.Cells.Copy wbZiel.Sheets(1).Cells(1, 1)
    With wbZiel.Sheets(1)
        .Name = wsQuelle.Name
        .Cells(1).Select
    End With
    Set wbZiel = ActiveWorkbook
    MyFileName = LW & ":\" & Info & "-" & Beleg & "-" & Format(Time, "hh/mm/ss") & ".xls"
    ActiveWorkbook.SaveAs Filename:=MyFileName
    ActiveWorkbook.Close
    If wbZiel Is ActiveWorkbook Then wbZiel.Close False
    Application.ScreenUpdating = True
End Sub

Hierbai wird der jeweilige auszudruckende Beleg aus der Datei mittels vorstehender Routine "ausgekoppelt" und auf den USB-Stick gespeichert.

...und dann hakt es eben unerklärlicherweise hin und wieder in der Zeile

ActiveWorkbook.SaveAs Filename:=MyFileName

mit eben dem Kommentar, dass auf das Laufwerk (LW) nicht zugegriffen werden kann.
Alle Variablen sind eindeutig deklariert und auch beim dem Makrostillstand mit gültigen Werten belegt.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#3
Hallo Günter,

so wirklich klar ist mir das auch nicht außer vielleicht, dass sich Excel bei so viel Code verschluckt. ;)
Sub USB_sichern_2()
   Application.ScreenUpdating = False
   LW = UCase(Left(Sheets("Deckblatt").Cells(25, 7), 1))
   MyFileName = LW & ":\" & Info & "-" & Beleg & "-" & Format(Time, "hh/mm/ss") & ".xls"
   ActiveSheet.Copy
   ActiveWorkbook.Close SaveChanges:=True, Filename:=MyFileName
   Application.ScreenUpdating = True
End Sub
Gruß Uwe
Top
#4
Hallo Uwe,

vielen Dank für deine Antwort - ich werde den Code mal nach deinem Vorschlag "entspecken" und sehen, wie sich Excel dann verhält!
Leider kann ich es nicht selbst testen, da ich keinen solchen (kostspieligen) USB-Stick besitze ...
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Top
#5
Hallo Günter,
Bin gerade am Smartphone, daher nur mal ein Tipp. Wird der code innerhalb kurzer Zeit häufig aufgerufen? Eventuell hilft es, eine kurze Wartezeit von ein paar Millisekunden zu nehmen. Oder Du prüfst vorab, ob das Laufwerk vorhanden ist, falls es kurz weg ist. ..
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste