Datei ersetzen?-Meldung unterdrücken

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Datei ersetzen?-Meldung unterdrücken
von: Robin
Geschrieben am: 07.01.2016 13:49:51

Hallo,
ich möchte ein Workbook unter gleichem Namen abspeichern und dabei folgende Fehlermeldung unterdrücken und mit "Ja" beantworten:
"Eine Datei mit dem Namen '..xlsm' ist bereits an diesem Speicherort vorhanden. Soll sie ersetzt werden?"
Es geht um eine Schreibgeschützte Mappe, die von einigen Usern gleichzeitig geöffnet ist, wobei die einzige Möglichkeit der Änderung ein Makro ist, welches den Schutz aufhebt, die Datei unter identischem Namen überschreibt und sodann wieder (bis zum Schließen mit ThisWorkbook.Saved=True) Schreibgeschützt ist.
PS: Warum wird der Parameter "Filename" autovervollständigt, und "WriteResPassword" nicht einmal groß geschrieben, beziehungsweise durch STRG+Leer vervollständigt? Muss ich das Ganze in Klammern setzen, oder fehlt evtl. noch ein zugehöriger Parameter?
Liebe Grüße,
Robin

Sub ZelleAendern()
UserForm1.Show
ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite
ThisWorkbook.SaveAs Filename:="pfad\..xlsm", writerespassword:="1"
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
End Sub

Bild

Betrifft: AW: Datei ersetzen?-Meldung unterdrücken
von: Nepumuk
Geschrieben am: 07.01.2016 18:22:18
Hallo,
das sollte funktionieren:

Sub ZelleAendern()
    UserForm1.Show
    With ThisWorkbook
        .ChangeFileAccess Mode:=xlReadWrite
        .Save
        .ChangeFileAccess Mode:=xlReadOnly
    End With
End Sub

Zu deinem PS: Filename ist auch eine Eigenschaft z.B. der Graphic-Klasse daher wird es richtig geschrieben. WriteResPassword ist "nur" ein Parameter und die werden grundsätzlich nicht richtig gestellt.
Gruß
Nepumuk

Bild

Betrifft: AW: Datei ersetzen?-Meldung unterdrücken
von: Robin
Geschrieben am: 08.01.2016 07:13:24
Hallo Nepumuk,
das mit dem PS hört sich plausibel an, Danke!
Zu dem Code:
Genau so hatte ich es zuerst auch zu lösen versucht, das Problem ist allerdings, dass die Mappe dann beim nächsten Öffnen nicht mehr Schreibgeschützt ist, weshalb ich den Weg über .SaveAs gehen wollte. Händisch funktioniert das Ganze, bzw. auch wenn der User die richtige Antwort "Ja" auswählt. Da ich darauf allerdings nicht vertrauen möchte, hätte ich die Meldung lieber unterdrückt und automatisch mit "Ja" beantwortet. Gibt es dazu eine Möglichkeit?
Grüße,
Robin

Bild

Betrifft: AW: Datei ersetzen?-Meldung unterdrücken
von: Nepumuk
Geschrieben am: 08.01.2016 08:37:58
Hallo Robin,
ich kann dir nicht ganz folgen, wo soll der User auf "Ja" klicken? Setzt du den Readonly-Zugriff nicht per Makro beim Öffnen der Mappe
Gruß
Nepumuk

Bild

Betrifft: AW: Datei ersetzen?-Meldung unterdrücken
von: Robin
Geschrieben am: 08.01.2016 12:55:13
Hallo Nepumuk,
den Schreibschutz hatte ich lediglich per Hand vergeben unter Datei/Speichern unter/Tools/Allgemeine Optionen.
Wenn der User die Datei Schreibgeschützt öffnet, hat er nur die Möglichkeit die zugelassenen Änderungen zu speichern, indem er per Button eine Userform aufruft, welche die oben genannte Routine startet.

Sub AufbewahrungAendern()
UserForm1.Show
ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite
ThisWorkbook.SaveAs Filename:="pfad\..xlsm", WriteResPassword:="1"
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
End Sub
Darauf folgt dann eine Meldung, die ich unterdrücken möchte:
"Eine Datei mit dem Namen '..xlsm' ist bereits an diesem Speicherort vorhanden. Soll sie ersetzt werden?" ->"Ja", "Nein", "Abbrechen"
Ich weiß, das ganze ist umständlich, hat aber bis auf diese Meldung funktioniert - die Feinheit wäre nun, diese Meldung zu unterdrücken und Excel automatisch mit "Ja" auf oben genannte Meldung zu antworten.
Beim Öffnen habe ich den Readonly Zugriff nicht gesetzt, da ich mich damit jetzt schon mehrmals aus der Datei ausgeschlossen habe (ich bekomme sie NUR noch schreibgeschützt auf):
[Diese Arbeitsmappe]
Private Sub Workbook_Open()
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
End Sub

[Modul]
Sub AufbewahrungAendern()
UserForm1.Show
ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite
ThisWorkbook.Save
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
End Sub
1)Schreibgeschützt Öffnen => Schreibgeschützt
2)Passwort eingeben -> "Änderungen vor dem Wechseln des Dateistatus speichern?" -> "Ja" => Schreibgeschützt
3)Passwort eingeben -> "Änderungen vor dem Wechseln des Dateistatus speichern?" -> "Nein" => Schreibgeschützt
4) Schreibgeschützt Öffnen => Laufzeitfehler #1004 'Die Methode ChangeFileAccess' für das Objekt '_Workbook' ist fehlgeschlagen -> "Beenden", "Debuggen", "Hilfe"
Markiert ist die Zeile:

ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Deshalb hatte ich auch diesen Lösungsansatz verworfen, aber vielleicht kannst du mir ja sagen, wo mein Fehler liegt.
Grüße,
Robin

Bild

Betrifft: AW: Datei ersetzen?-Meldung unterdrücken
von: Nepumuk
Geschrieben am: 08.01.2016 14:59:50
Hallo,
versuch es mit:
Application.DisplayAlerts = False
nicht vergessen, nach dem Speichern wider auf True setzen.
Gruß
Nepumuk

Bild

Betrifft: AW: Datei ersetzen?-Meldung unterdrücken
von: Robin
Geschrieben am: 11.01.2016 08:14:12
Hallo Nepumuk,
damit funktioniert es nun endlich. Vielen lieben Dank noch einmal für deine Hilfe!
Grüße,
Robin

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Datei ersetzen?-Meldung unterdrücken"