Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schreibschutz durch Makro aufheben

Schreibschutz durch Makro aufheben
08.12.2006 12:47:13
Bernd
Hallo zusammen
Ich würde gerne in eine Arbeitsmappe folgend Funktionalität einbauen:
Die Arbeitsmappe soll Schreibgeschützt sein wenn sie mit deaktivierten Makros geöffnet wird.
Werden die Makros beim Öffnen aktiviert soll der Schreibschutz aufgehoben werden.
Ich habe es bisher so versucht daß ich ein Modul eingefügt habe in das ich die auto_open Prozedur wie folgt reingeschrieben habe:

Sub auto_open()
ActiveWorkbook.Unprotect password:="Test"
End Sub

Das funktioniert leider nicht. Es kommt zwar zu keiner Fehlermeldung doch die Arbeitsmappe bleibt auch mit aktivierten Makros schreibgeschützt.
Danke für alle Tips und Anregungen im Voraus.
Gruß Bernd

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schreibschutz durch Makro aufheben
08.12.2006 12:59:11
Andre´
Hallo Bernd,
bevor du die Mappe schließt folgendes in DieseArbeitsmappe einfügen

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Protect ("Test")
End Sub

MFG
Andre
AW: Schreibschutz durch Makro aufheben
08.12.2006 13:03:47
Andre´
Hallo Bernd,
Dein Makro muss in DieseArbeitsmappe, nicht in ein Modul!
MFG
Andre
AW: Schreibschutz durch Makro aufheben
08.12.2006 13:17:27
Bernd
Hallo Andre
Dein erster Tip soll wenn ich das richtig seh einen Schreibschutz beim schliessen der Mappe einfügen. Das ist nicht mein Problem. Ich habe einen Schreibschutz den ich mittels eines Makros aufheben will.
Zu deinem zweiten Beitrag - Die auto_open Prozedur funktioniert nicht wenn man sie in DieseArbeitsmappe packt.
Gruß Bernd
Anzeige
AW: Schreibschutz durch Makro aufheben
08.12.2006 13:41:07
Andre´
Hallo Bernd,
dieses in DieseArbeitsmappe

Private Sub Workbook_Open()
Worksheets("Tabelle1").Unprotect ("Test")'Schreibschutz für Tabelle1 aufheben
ActiveWorkbook.Unprotect (PW)'Arbeitsmappenschutz aufheben
End Sub

MFG
Andre
AW: Schreibschutz durch Makro aufheben
08.12.2006 13:43:57
Andre´
Sorry, Mappenschutz für deinen Fall natürlich so
ActiveWorkbook.Unprotect ("Test")'Arbeitsmappenschutz aufheben
AW: Schreibschutz durch Makro aufheben
08.12.2006 14:14:04
Bernd
Danke André
Ich habe es tatsächlich hinbekommen, musste aber leider feststellen dass mein Problem doch komplizierter ist als ich zuerst dachte. Wenn jemand die Mappe mit aktivierten Makros öffnet sie dann speichert, beim Schliesen der Mappe jedoch auf nicht speichern klickt ist die Mappe beim nächsten öffnen ungeschützt ob mit Makro, oder nicht.
Ich fürcht eine wirkliche Lösung gibt es gar nicht.
Gruß Bernd
Anzeige
AW: Schreibschutz durch Makro aufheben
08.12.2006 14:23:04
IngGi
Hallo Bernd,
dieses Problem läßt sich am Besten dadurch lösen, dass du in das Schließereignis eine automatische Speicherung der Mappe mit einprogrammierst, also in "DieseArbeitsmappe":

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save
End Sub
Gruß Ingolf
AW: Schreibschutz durch Makro aufheben
08.12.2006 14:30:37
Bernd
Hallo Ingolf
Ich habe schon fast auf diesen Vorschlag gewartet. Das kann man aber nicht machen. Man muss dem Anwender ja die Möglichkeit lassen die Arbeitsmappe zu schliessen ohne zu speichern falls er irgendwelche Fehler eingebaut hat die er nicht speicher will.
Gruß Bernd
Anzeige
AW: Schreibschutz durch Makro aufheben
08.12.2006 15:21:27
IngGi
Hallo Bernd,
eine Möglichkeit wäre noch, beim Öffnen eine temporäre Datei zu speichern, die bei jedem Speichern ebenfalls aktualisiert wird. Beim Schließen wird dann geprüft, ob die Datei seit der letzten Speicherung verändert wurde (ThisWorkbook.Saved = False). Falls ja, wird der Benutzer gefragt, ob er die Datei speichern will. Wenn ja, wird die Datei gespeichert, wenn nein, wird statt dessen die temporäre Datei, die ja den Zustand bei der letzten Speicherung enthält, unter dem Originaldateinamen gespeichert. In beiden Fällen wird natürlich die temporäre Datei anschließend gelöscht.
Gruß Ingolf
Anzeige
AW: Schreibschutz durch Makro aufheben
08.12.2006 15:20:51
Matthias
Hallo Bernd,
nicht ganz das, was du möchtest, aber mit ähnlicher Funktionalität:

  1. erstelle ein Blatt namens "Warnung" (wenn du es anders nennen willst, musst du den Namen im u.a. Code anpassen
  2. gestalte das Blatt so, dass eine Info draufsteht, dass die Mappe mit deaktivierten Makros nicht funktioniert.
  3. kopiere folgenden Code ins Modul DieseArbeitsmappe:


Option Explicit
Const OhneMakros = "Warnung" 'Name des Blattes mit der Info
Const pwWarnung = "12345" 'Kennwort des Blattes mit der Info
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.Saved = False Then
Select Case MsgBox("Sollen Ihre Änderungen in '" & Me.Name & "' gespeichert werden?", vbYesNoCancel + vbExclamation)
Case vbYes
Speichern
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
If SaveAsUI Then
MsgBox "Speichern unter... nicht möglich!" 'müsste falls erforderlich noch erweitert werden
Else
Speichern
End If
End Sub
Private Sub Workbook_Open()
AllesEinblenden
On Error Resume Next
'beim Speichern gemerktes aktives Blatt anzeigen:
Sheets(Sheets(OhneMakros).Cells(Rows.Count, Columns.Count).Value).Activate
Me.Saved = True
End Sub
Private Sub AllesAusblenden()
Dim sh As Worksheet
Sheets(OhneMakros).Visible = True
For Each sh In Me.Worksheets
If sh.Name <> OhneMakros Then sh.Visible = xlSheetVeryHidden
Next sh
End Sub
Private Sub AllesEinblenden()
Dim sh As Worksheet
For Each sh In Me.Worksheets
sh.Visible = True
Next sh
Sheets(OhneMakros).Visible = xlSheetVeryHidden
End Sub
Private Sub Speichern()
Dim sh As Worksheet
Dim fehler As Boolean
Set sh = ActiveSheet
'geöffnetes Blatt merken:
With Sheets(OhneMakros)
.Unprotect Password:=pwWarnung
.Cells(Rows.Count, Columns.Count) = sh.Name
.Protect Password:=pwWarnung
End With
Application.EnableEvents = False
Application.ScreenUpdating = False
AllesAusblenden
On Error Resume Next
Me.Save
If Err.Number > 0 Then
MsgBox Err.Description, , "Fehler " & Err.Number
fehler = True
End If
On Error GoTo 0
AllesEinblenden
sh.Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
If Not fehler Then Me.Saved = True
End Sub

Gruß Matthias
Anzeige
AW: Schreibschutz durch Makro aufheben
08.12.2006 16:39:03
Bernd
Danke Mathias, Danke Ingolf
Werde mir eure beiden Vorschläge mal anschauen und testen. Macht auf jeden Fall schon mal Hoffnung.
Gruß Bernd

21 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige