Wie kann man Schreibschutz ignorieren?
Liebe VBA-Profis, ich muss mit einer Steuerdatei viele andere Excel-Dateien auslesen.
Dazu werden die Dateien der Reihe nach geöffnet, Daten herausgelesen und wieder geschlossen, ohne zu speichern.
Mein Makro schafft das ganz gut, außer wenn eine Datei durch einen anderen User geöffnet (und damit schreibgeschützt) ist. Dann erscheint das Hinweisfenster und das Makro stoppt. Nachdem ich eh nichts ändere, soll das Makro aber durchlaufen. Application.DisplayAlerts=False nützt nichts.
2 Antworten
Du musst die Security deaktivieren und das Excel als NUR lesend öffnen.
Hier die Dinge die ich in diesen Fällen mache.
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Application.EnableLargeOperationAlert = False
Application.FileValidation = msoFileValidationSkip
..natürlich am ende auch wieder zurückstellen, sonst funktioniert Excel nicht mehr wie gewohnt.
Besonders wenn das Programm abstürzt an die Rückstellung denken.
In der Workbooks.Open-Methode kann man über den dritten Parameter "ReadOnly" mitgeben, dass die Datei nur lesend geöffnet werden soll. Dann sollte er sich nicht daran stören, wenn sie ein anderer gerade bearbeitet.
https://docs.microsoft.com/de-de/office/vba/api/excel.workbooks.open