Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
936to940
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
936to940
936to940
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Arbeitsmappe schützen...

Arbeitsmappe schützen...
05.01.2008 09:39:23
Z.A.
Guten Tag alle zusammen,
vielleicht kann mir jemand bei meinem Problem helfen.
Ich hab ein kleines Excel Programm mit Makros erstellt, und möchte, diese so schützen, dass egal bei welchem PC man das dokument öffnet, die Menüleiste ausgeblendet ist, und man auch nicht unter Optionen z.B. die Gitternetzlinien, Gliederungssymbole etc verstellen kann. Man dürfte auch nicht sehen ob und welche Makros vorhanden sind, die könnte man ja löschen und dann würde dass Programm nicht mehr funktionieren.
Am besten wäre es wenn man eine eigene Menüleiste sowie Symbolleiste erstellen könnte. Vielleicht funktioniert des ja auch dass diese eigene Funktionen haben.
Z.B. ein Inhaltsverzeichnis in der Menüleiste.
Wäre echt froh über Hilfe die ich bekommen kann.
Vielen Dank.
Gruß Z.A.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Arbeitsmappe schützen...
05.01.2008 09:57:25
Matthias
Hallo Z.,
da hast du dir für den Level "VBA nein" ja eine Menge vorgenommen!
Die erste Hürde ist, dass die Makros beim Öffnen immer aktiviert sind.
Dazu habe ich im Modul "DieseArbeitsmappe" diesen Code:

' Mappe nur mit aktivierten Makros öffnen
' Anleitung:
' Erstelle in der betreffenden Mappe ein Blatt mit Namen "Warnung"
' (Konstante OhneMakros kann angepasst werden)
' schreibe auf dieses Blatt eine Info, dass die Makros aktiviert sein müssen,
' um mit der Mappe zu arbeiten
' 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


Der Code ist deshalb so lange, weil dafür gesorgt werden muss, dass vor dem Speichern erst alle Blätter bis auf das Hinweisblatt (siehe Anleitung im Code) ausgeblendet werden müssen, um die Mappe beim Öffnen mit deaktivierten Makros "unbrauchbar" zu machen und lediglich das Hinweisblatt anzuzeigen.
Ja, dies ist der erste Schritt, und es folgen noch einige...
Ich warte nun aber erstmal auf Deine Rückmeldung.
Gruß Matthias

Anzeige
AW: Arbeitsmappe schützen...
05.01.2008 10:37:00
Z.A.
Hallo Matthias,
Danke, funktioniert einwandfrei. Habe es so in die Arbeitsmappe mit eingefügt.
Gruß Z.A.

AW: Arbeitsmappe schützen...
05.01.2008 12:20:00
Z.A.
Hallo nochmal,
ich habe diesen Code gefunden um die komplette Menüleiste auszublenden.
Der funktioniert auch einwandfrei. Aber gibt es eine Möglichkeit, mit einer Passwortabfrage die Menüleiste wieder einzublenden?
Und irgendwie anstatt die alte eine neue Menüleiste zu erstellen?
Vielen Dank nochmal.
Gruß Z.A.
Hier der Code:
Option Explicit
Dim Cn%
Dim CdbList()
Dim Status_FormulaBar As Boolean
Dim Status_HorScroll As Boolean
Dim Status_VerScroll As Boolean
Dim Status_StatusBar As Boolean
Dim Status_Gridlines As Boolean
Dim Status_Headings As Boolean

Sub Auto_Open()
Dim Cdb As CommandBar
'Wenn Titelleiste von Excel geändern werden soll
'Application.Caption = "Meine Mustervorlage"
'falls die eigenen Symbolleisten auch ausgeblendet werden sollen, dann den
'Code 'And Cdb.BuiltIn = True' aus nachstehender Zeile entfernen
Cn = 1
For Each Cdb In Application.CommandBars
If Cdb.Visible And Cdb.Type  msoBarTypeMenuBar And Cdb.BuiltIn = True Then
ReDim Preserve CdbList(Cn)
CdbList(Cn) = Cdb.Name
Cn = Cn + 1
Cdb.Visible = False
End If
Next
'Stellt den Status fest und blendet alles aus
With ActiveWindow
Status_HorScroll = .DisplayHorizontalScrollBar
If .DisplayHorizontalScrollBar = True Then .DisplayHorizontalScrollBar = False
Status_VerScroll = .DisplayVerticalScrollBar
If .DisplayVerticalScrollBar = True Then .DisplayVerticalScrollBar = False
Status_Gridlines = .DisplayGridlines
If .DisplayGridlines = True Then .DisplayGridlines = False
Status_Headings = .DisplayHeadings
If .DisplayHeadings = True Then .DisplayHeadings = False
End With
With Application
Status_StatusBar = .DisplayStatusBar
If .DisplayStatusBar = True Then .DisplayStatusBar = False
Status_FormulaBar = .DisplayFormulaBar
If .DisplayFormulaBar = True Then .DisplayFormulaBar = False
End With
'Menüleiste
CommandBars(1).Enabled = False
End Sub



Sub Auto_Close()
Dim Cdb As CommandBar
Dim Ci%
For Ci = 1 To Cn - 1
Application.CommandBars(CdbList(Ci)).Visible = True
Next Ci
With ActiveWindow
.DisplayHeadings = Status_Headings
.DisplayHorizontalScrollBar = Status_HorScroll
.DisplayVerticalScrollBar = Status_VerScroll
.DisplayGridlines = Status_Gridlines
End With
With Application
.DisplayStatusBar = Status_StatusBar
.DisplayFormulaBar = Status_FormulaBar
End With
CommandBars(1).Enabled = True
End Sub


Anzeige
AW: Arbeitsmappe schützen...
05.01.2008 14:08:00
Matthias
Hallo Z.,
Hier mal eine Beispielmappe, was alles möglich (und nötig!) ist:
https://www.herber.de/bbs/user/48816.xls
Um die Mappe zu "entsperren", klicke in der Symbolleiste auf das so benannte Symbol. Das Kennwort ist "123".
Zusätzlich solltest du das VB-Projekt noch durch ein Kennwort schützen (auch wenn der Schutz durch versierte Nutzer leicht ausgehebelt werden kann).
Gruß Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige