Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA defekte Datei automatisch reparieren?

VBA defekte Datei automatisch reparieren?
06.11.2017 10:29:21
Karsten
Hallo
Ich habe ein Programm geschrieben, was Daten in diverse andere Dateien schreibt, damit das Hauptprogramm schreibgeschützt geöffnet werden kann.
Jetzt ist es in letzter Zeit bereits mehrfach passiert, dass das Programm keine Daten mehr speichern/aufrufen konnte.
Wenn man dann die zugehörige Datei manuell geöffnet hat, kam der Fehler, dass die Datei beschädigt war und repariert werden musste.
Kann man das automatisieren und per VBA machen lassen?
Also das er erst prüft, ob die Dateien in Ordnung sind, falls nicht sie repariert und dann erst die Funktion aufnimmt.
Gruß
K. Jung

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA defekte Datei automatisch reparieren?
06.11.2017 10:33:21
mumpel
Hallo!
Nein, das kann man m.W. nicht. Die Meldung erfolgt ja bevor die Datei (vollständig) geladen wird.
Wenn ständig solche Probleme auftreten kann es an Deinem Code liegen. Wie sieht der Code aus?
Gruß, René
AW: VBA defekte Datei automatisch reparieren?
06.11.2017 12:53:48
Nepumuk
Hallo,
bei der Workbooks_Open - Methode gibt es einen Parameter: CorruptLoad
zu diesem gibt es 3 Möglichkeiten:
xlExtractData
xlNormalLoad
xlRepairFile
Ich würde es mal so versuchen:
Public Sub Beispiel()
    Dim objWorkbook As Workbook
    Dim strPath As String
    strPath = "C:\Ordner\Unterordner\Datei.xlsx"
    Set objWorkbook = Workbooks.Open(Filename:=strPath, CorruptLoad:=xlRepairFile)
    
    
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA defekte Datei automatisch reparieren?
06.11.2017 13:38:55
Karsten
Das werde ich mal probieren, vielen Dank.
Gruß
K. Jung
AW: VBA defekte Datei automatisch reparieren?
07.11.2017 09:10:21
mumpel
Du solltest aber trotzdem versuchen zu klären weshalb es zu diesem Problem kommt. Muss ja eine Ursache haben.
AW: VBA defekte Datei automatisch reparieren?
08.11.2017 05:59:06
Karsten
Das werde ich natürlich machen.
Kommt aber nur 1-2x im Jahr vor, deshalb schwierig.
Gruß
K. Jung
AW: VBA defekte Datei automatisch reparieren?
07.11.2017 08:54:14
mumpel
Was es nicht alles gibt. ;-)
AW: VBA defekte Datei automatisch reparieren?
08.11.2017 06:11:06
Karsten
Hi
So habe ich es jetzt gelöst:
Function IsWorkbookOpen(strWB As String) As Boolean
On Error Resume Next
IsWorkbookOpen = Not Workbooks(strWB) Is Nothing
End Function

Das folgende ist nur ein Teil des Makros, es werden Variabeln beim Aufrufen mitgegeben:
            On Error Resume Next
Workbooks.Open Filename:=Pfad_NOR + CStr(Dateiname) + ".XLSX", ReadOnly:=lesen       _
If IsWorkbookOpen(Dateiname + ".XLSX") Then
Else
Workbooks.Open Filename:=Pfad_NOR + CStr(Dateiname) + ".xlsx", ReadOnly:=lesen,  _
CorruptLoad:=xlRepairFile
Kill "\\L31SRV10\U027\Operations\AR-Betriebstechnik\ar\Schichtwechsel\" &  _
Dateiname & ".xlsx"
Application.DisplayAlerts = False
Workbooks(Dateiname + ".xlsx").SaveAs "\\L31SRV10\U027\Operations\AR- _
Betriebstechnik\ar\Schichtwechsel\" & Dateiname & ".xlsx", AccessMode:=xlShared
Application.DisplayAlerts = True
Workbooks(Dateiname + ".xlsx").Close SaveChanges:=True
Workbooks.Open Filename:=Pfad_NOR + CStr(Dateiname) + ".XLSX", ReadOnly:=lesen
End If

Also, es wird versucht, die Datei zu öffnen.
Wenn es wegen dem Fehler nicht geht, geht er ohne Hinweis zum nächsten Schritt.
Dann wird geprüft, ob die Datei offen ist.
Wenn nicht startet das Reparatur Teil.
1. Reparieren der Datei.
2. Löschen der Datei von der Festplatte.
3. Speichern der Datei incl. der Freigabe aktiviert.
4. Schließen und speichern der Datei.
5. Erneutes öffnen der fehlerfreien Datei.
Vielen Dank für die Hilfe.
Ich begebe mich jetzt auf die Ursachensuche.
Gruß
K. Jung
Anzeige
AW: VBA defekte Datei automatisch reparieren?
07.11.2017 05:58:52
Karsten
Hi
Kann die Freigabe das Problem sein?
Denn der Fehler tritt nur in Dateien auf, wo ich eine Freigabe eingerichtet habe. (Jeder Nutzer schreibt in andere Zellen und nie 2 in die gleiche)
Gruß
K. Jung

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige