Makro-Sicherheit

Hallo Zusammen,
ich hoffe das mir jemand helfen kann.
Ich habe bei einer Exceldatei, Auto_open Informationen hinterlegt.
Dort frage ich den Benutzer ab und gewähre im Zutritt oder auch nicht!
Wenn er anfangs aber die Makroausführung (Sicherheitsstufe Mittel) deaktiviert, gelangt er so in die Datei und hat dementsprechend auch Sicht auf die Daten.
Kann man das vorher abfragen bzw. das Programm dahin veranlassen, es wieder zu schliessen?

Hoffe auf rasche Hilfe.
Gruß
Andy

Hallo Andy,

erstell für die Datei eine digitale Signatur. So wird der Benutzer nicht mehr gefragt, ob Makros aktiviert werden sollen oder nicht.

Such nach dem Programm „selfcert.exe“, sollte normalerweise im Office Paket enthalten sein.

Grüße,
Kerstin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Kerstin,

gibt es keine andere Möglichkeit?
Ich habe mir bezüglich der digitale Signatur mal die Hilfe durchgelesen. Habe da nicht soviel verstanden.
Nur das es an einer (externen) Zertifizierungsstelle gehen muss.
Das ist für diese, eine Anwendung aber eine Nummer zu gross!

Gruß
Andy

Hallo Andy,

gibt es keine andere Möglichkeit?
Ich habe mir bezüglich der digitale Signatur mal die Hilfe
durchgelesen. Habe da nicht soviel verstanden.
Nur das es an einer (externen) Zertifizierungsstelle gehen
muss.
Das ist für diese, eine Anwendung aber eine Nummer zu gross!

Nein, daß muß es nicht. Die Signatur, die Du selbst erstellst (über das Programm selfcert) kann so genutzt werden. Allerdings funktioniert das immer nur dann, wenn die Signatur auf dem Rechner installiert ist, von dem die Datei aufgerufen wird.

Soll heißen, wird die Datei auf einem anderen Rechner aufgerufen, erscheint dennoch ein Dialogfeld mit der Frage, ob die Makros aktiviert werden sollen. Dann muß die selbsterstellte Signatur nur noch auf dem zweiten Rechner installiert werden und schon funktioniert’s.

Machst Du das über die externe Zertifizierungsstelle, ist die Signatur für sämtliche Rechner gültig. Aber das ist wohl hier nicht nötig.

Grüße,
Kerstin

Wenn er anfangs aber die Makroausführung (Sicherheitsstufe
Mittel) deaktiviert, gelangt er so in die Datei und hat
dementsprechend auch Sicht auf die Daten.
Kann man das vorher abfragen bzw. das Programm dahin
veranlassen, es wieder zu schliessen?

Hallo Andy,
in Excel ist nix sicher, gar nix. Aber eines kannst du machen als kleine Barriere.
Erstelle ein neues Blatt „xyz“ mit dem Inalt dass dort ein Hinweis steht dass der Benutzer Makros aktivieren muss bevor er auf die daten zugreifen kann.
Dann machst du in workbook_open deine Abfrage nach passwort usw, wenn es stimmt blendest du Blatt „xyz“ aus und blendest alle anderen Blätter ein.
In Workbook_beforeclose (habe grad kein Excel, Schreibweise also überprüfen) blendest du alle Blätter bis auf „xyz“" mit xlveryhidden aus.
xlveryhidden kann man mit Excel nicht aufheben, geht nur per vba.
D.h. ohne makroaktivierung sieht der User nur Blatt „xyz“, ansonsten mit gültigem Passwort siehr er die daten.
Kannst dich melden wenn du es nicht hinbekommst, ich schick dir dann hier nen Link zu einem Beispielcode.
Gruß
Reinhard
Gruß
Reinhard

Hallo Andy.
hier mein Lösungsvorschlag

Codes in: „diese Arbeitsmappe“

'globale Variablen:
Dim InI As Integer ’ Zählvariable für Register
Dim ByS As Boolean ’ Variable für Speicherung

Private Sub Workbook_BeforeClose(Cancel As Boolean)
’ ausblenden aller Register außer Tabelle1 mit
’ Sheets("…").Visible = xlVeryHidden aus
’ dies hat den Vorteil Sie können nur per VBA eingeblendet werden.
Dim Mldg As Byte ’ Variable für Schalter MsgBox
’ ActiveWorkbook.Unprotect („Passwort“) ’ falls Dateischutz
If ActiveWorkbook.Saved Then
’ Datei wurde nicht verändert
’ eine Tabelle muß min. eingeblendet sein
Sheets(„Tabelle1“).Visible = True
’ alle Tabellen ausblenden vom letzten bis zum ersten
’ außer „Tabelle1“
For InI = Sheets.Count To 1 Step -1
If Sheets(InI).Name „Tabelle1“ Then Sheets(InI).Visible = xlVeryHidden
Next InI
ByS = True
ThisWorkbook.Close True
Else
If ByS = True Then Exit Sub
Mldg = MsgBox(" Sollen die Veränderungen gespeichert werden ??", _
vbYesNo + vbQuestion, „Speicher abfrage ?“, „“, 0)
If Mldg = 6 Then ’ es wurde „Ja“ gedrückt
’ aktualisierung Bildschirm aus
Application.ScreenUpdating = False
’ eine Tabelle muß min. eingeblendet sein
Sheets(„Tabelle1“).Visible = True
’ alle Tabellen ausblenden vom letzten bis zum ersten
’ außer „Tabelle1“
For InI = Sheets.Count To 1 Step -1
If Sheets(InI).Name „Tabelle1“ Then Sheets(InI).Visible = xlVeryHidden
Next InI
’ aktualisierung Bildschirm ein
Application.ScreenUpdating = True
’ Speichervariable auf True, da Ereignis Workbook_BeforeSave
’ augeführt wird
ByS = True
ThisWorkbook.Save
Else
ByS = True
ThisWorkbook.Close False
End If
End If
’ ActiveWorkbook.Protect („Passwort“) ’ Dateischutz wieder setzen
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
’ Dieses Ereignis wird auch angesprungen falls in Workbook_BeforeClose die
’ Speicherabfrage mit Ja beantwortet wird
’ Das speichern muß abgefangen werden damit die Datei nicht mit eingeblendeten Tabellen
’ gespeichert wird.
If ByS = False Then
’ das Sicherungsereignis abbrechen, keine Speicherung
Cancel = True
’ Hinweis
MsgBox „Datei kann nur beim schließen gespeichert werden“
End If
End Sub

Private Sub Workbook_Open()
’ ActiveWorkbook.Unprotect („Passwort“)
’ aktualisierung Bildschirm aus
Application.ScreenUpdating = False
’ alle Tabellen einblenden vom letzten bis zum ersten
For InI = Sheets.Count To 1 Step -1
Sheets(InI).Visible = True
Next InI
’ Tabelle mit Hinweis ausblenden
Sheets(„Tabelle1“).Visible = False
’ Schalter Veränderung der Datei zurückstellen
’ Damit das einblenden der Register nicht als Veränderung der Datei angesehen wird
ActiveWorkbook.Saved = True
’ aktualisierung Bildschirm ein
Application.ScreenUpdating = True
’ ActiveWorkbook.Protect („Passwort“)
End Sub
’ Füge ein neues Register ein und schreibe groß drauf „Makro wurden nicht aktiviert“
’ in Private Sub Workbook_BeforeClose(Cancel As Boolean)
’ blendest Du alle anderen Register aus
’ Das Ausblenden hat den Vorteil das die Register nur über VBA eingeblendet werden können
’ und nicht über Format, Blatt, Einblenden.
’ VBA Projekt schützen

du brauchst hier nur mehr deine Codes für die Abfrage der Benutzer eintragen. ist die Makrosicherheit aktiviert, kann der Anwender zwar Tabelle1 sehen, jedoch nicht die anderen Tabellenblätter.

benötigst du eine Beispieldatei so meld dich übers forum

mfg
Spaguzzi

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]