Herbers Excel-Forum - das Archiv

Makros aktivieren

Bild

Betrifft: Makros aktivieren
von: Ute

Geschrieben am: 28.12.2006 11:06:13
Hallo Leute,
folgendes Problem !
Sofern der Benutzer die Makros nicht aktiviert hat, soll die Tabelle nicht änderbar sein, oder sich automatisch schließen.
Kann mir jemand dafür eine Lösung anbieten ?
Vielen Dank im Voraus !
Bild

Betrifft: AW: Makros aktivieren
von: Nepumuk

Geschrieben am: 28.12.2006 11:57:57
Hallo Ute,
mit automatisch schließen is da nix, wenn keine Makros laufen. Das einfachste wäre, die Mappe mit einem Lese- Schreibschutzkennwort zu versehen, welches nur du kennst. Die Mappe wird über eine .exe gestartet, in welcher sich auch das Kennwort befindet. Dann ist es völlig egal was der User versucht, die Makros werden immer gestartet. Selbst wenn die Makrosicherheit auf Hoch gestellt ist. Hast du VB oder VB.net ?
Gruß
Nepumuk
Bild

Betrifft: AW: Makros aktivieren
von: Ute
Geschrieben am: 28.12.2006 12:06:07
Hallo Nepomuk,
wie soll das denn aussehen ? - mich würde die Zeile mit dem Kennwort brennend interressieren.
Bild

Betrifft: AW: Makros aktivieren
von: Nepumuk

Geschrieben am: 28.12.2006 12:43:42
Hallo Ute,
ich hab dir mal ein Beispiel gemacht.
https://www.herber.de/bbs/user/39217.zip
In dem Ordner findest du eine Excelmappe welche geschützt ist, eine .EXE und die Projektdateien (fallst du VB6.0 hast, kannst du die ja öffnen oder auch im VBA-Editor von Excel importieren. Der Code in der .EXE sieht so aus:
Option Explicit

Private Sub Main()
    Dim objApplication As Object
    Set objApplication = CreateObject("Excel.Application")
    objApplication.Workbooks.Open Filename:=App.Path & "\Mappe1.xls", _
        Password:=Chr$(78) & Chr$(101) & Chr$(112) & Chr$(117) & Chr$(109) & Chr$(117) & Chr$(107)
    objApplication.Visible = True
    Set objApplication = Nothing
End Sub

Das Kennwort der Mappe ist natürlich "Nepumuk" :-) Das Kennwort erzeuge ich durch eine Aneinanderreihung von Chr-Funktionen, damit es nicht mit einem Hex-Editor aus der .EXE ausgelesen werden kann. Die Mappe muss sich im selben Ordner befinden, wie die .EXE
Gruß
Nepumuk
Bild

Betrifft: AW: Makros aktivieren
von: Matthias G

Geschrieben am: 28.12.2006 12:00:43
Hallo Ute,
mein Vorschlag:
' 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

Gruß Matthias
Bild

Betrifft: AW: Makros aktivieren
von: Ute
Geschrieben am: 28.12.2006 12:10:23
Danke Matthias, werde ich gleich mal ausprobieren !
 Bild
Excel-Beispiele zum Thema "Makros aktivieren"
Start des Makros nach Laden der Arbeitsmappe Makros in Abhängigkeit vom Zellennamen aufrufen
Makros zeitgesteuert aufrufen CommandBar in Abhängigkeit vorhandener Makros erstellen
Makrostart bei Auswahl einer Zelle in Zeile 3 Makros aus einem Standardmodul in ComboBox einlesen
Beim Aktivieren einer CheckBox Häkchen in Zelle eintragen Menüpunkt SPEICHERN deaktivieren
10 UserForm-CheckBoxes als Serie aktivieren Beim Öffnen PowerPoint starten und danach Mappe aktivieren