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

Code schützen mit pw aber trotzdem nutzbar

Code schützen mit pw aber trotzdem nutzbar
03.08.2004 10:49:55
Manuel
Hi ihrs..
Ich habe eine Excel-Datei mit sehr viel Code.
Diesen Code soll man nicht auslesen können.
Excel bietet die Funktion des schützen.
Nur wenn ich das nutze, kann ich nicht mehr auf den Code zugreifen.
Was kann ich tunm, damit weiterhin alle Buttons, UserForm und Module funktionieren, ohne das fremde den Code auslesen können?
Gruß
Manuel
AW: Code schützen mit pw aber trotzdem nutzbar
IngoG
Hallo Manuel,
hast Du im VBA-Editor unter Extras/VBAProjekteigenschaften /Schutz ein PW eingegeben und das häkchen bei Projekt für anzeige sperren gemacht?
Gruß Ingo
AW: Code schützen mit pw aber trotzdem nutzbar
Manuel
Hi Ingo.
Ja, das habe ich.
Genau das meinst ich auch mit "Excel bietet die Funktion des schützen."
Gruß
Manuel
AW: Code schützen mit pw aber trotzdem nutzbar
Ulf
Solange das Projekt geschützt ist, kannst du mit VBA nicht darauf zugreifen.
Schütz das Projekt nicht und verhindere, dass user überhaupt in den Editor kommt.
Ist aber keine leichte Übung und nichts für den Rekorder.
Ulf
AW: Code schützen mit pw aber trotzdem nutzbar
Manuel
Hi Ulf!
Danke für die Antwort.
Ist das dann auch ein Code?
Wenn ja, kennst du den (oder irgendwer anders?)
Gruß
Manuel
Anzeige
AW: Code schützen mit pw aber trotzdem nutzbar
03.08.2004 13:02:15
Nepumuk
Hallo Manuel,
so geht's:


Public Sub ausschalten()
    With Application
        .OnKey "%{F11}", ""
        .EnableCancelKey = xlDisabled
        .CommandBars("Toolbar List").Enabled = False
        .CommandBars("Ply").Enabled = False
        .CommandBars("Document").Enabled = False
        .CommandBars.DisableCustomize = True
        Call ControlEnableDisable(1695, False)
    End With
End Sub
Public Sub einschalten()
    With Application
        .OnKey "%{F11}"
        .EnableCancelKey = xlInterrupt
        .CommandBars("Toolbar List").Enabled = True
        .CommandBars("Ply").Enabled = True
        .CommandBars("Document").Enabled = True
        .CommandBars.DisableCustomize = False
        Call ControlEnableDisable(1695, True)
    End With
End Sub
Private Sub ControlEnableDisable(intId As Integer, bolStatus As Boolean)
    Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
    For Each myCommandBar In Application.CommandBars
        Set myCommandBarControl = myCommandBar.FindControl(ID:=intId, Recursive:=True)
        If Not myCommandBarControl Is Nothing Then myCommandBarControl.Enabled = bolStatus
    Next
End Sub


Gruß
Nepumuk
Anzeige
Extras-Makro-Makros-Bearbeiten geht noch...
Uduuh
...und damit auch der Zugriff auf den Editor.
Gruß aus'm Pott
Udo
AW: Extras-Makro-Makros-Bearbeiten geht noch...
03.08.2004 15:22:37
Nepumuk
Hallo Manuel,
Udo hat recht. Mal sehen, ob er noch eine Lücke findet.


Option Explicit
Public Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As LongAs Long
Public Sub ausschalten()
    With Application
        .OnKey "%{F11}", ""
        .OnKey "{ESC}", ""
        .EnableCancelKey = xlDisabled
        .CommandBars("Toolbar List").Enabled = False
        .CommandBars("Ply").Enabled = False
        .CommandBars("Document").Enabled = False
        .CommandBars.DisableCustomize = True
        Call ControlEnableDisable(1695, False)
        Call ControlEnableDisable(186, False)
        Call ControlEnableDisable(2186, False)
        Call ControlEnableDisable(30017, False)
    End With
    LockWindowUpdate Application.VBE.MainWindow.HWnd
End Sub
Public Sub einschalten()
    With Application
        .OnKey "%{F11}"
        .OnKey "{ESC}"
        .EnableCancelKey = xlInterrupt
        .CommandBars("Toolbar List").Enabled = True
        .CommandBars("Ply").Enabled = True
        .CommandBars("Document").Enabled = True
        .CommandBars.DisableCustomize = False
        Call ControlEnableDisable(1695, True)
        Call ControlEnableDisable(186, True)
        Call ControlEnableDisable(2186, True)
        Call ControlEnableDisable(30017, True)
    End With
    LockWindowUpdate False
End Sub
Private Sub ControlEnableDisable(intId As Integer, bolStatus As Boolean)
    Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
    For Each myCommandBar In Application.CommandBars
        Set myCommandBarControl = myCommandBar.FindControl(ID:=intId, recursive:=True)
        If Not myCommandBarControl Is Nothing Then myCommandBarControl.Enabled = bolStatus
    Next
End Sub


Gruß
Nepumuk
Anzeige
AW: Extras-Makro-Makros-Bearbeiten geht noch...
Ulf
Hat er! Aber das behält er jetzt für sich.
Ulf
AW: Code schützen mit pw aber trotzdem nutzbar
Ulf
Hi,
das reicht noch nicht, du musst auch das control Makros in Extras disablen. Wenn user
über Makro bearbeiten versucht reinzukommen, sieht er u.U. das Editorfenster nicht, es ist aber dennoch da und sogar bearbeitbar.
Ulf
AW: Code schützen mit pw aber trotzdem nutzbar
03.08.2004 16:15:33
Nepumuk
Hi,
nächster Versuch:


Option Explicit
Public Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As LongAs Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As LongAs Long
Public Sub ausschalten()
    DestroyWindow Application.VBE.MainWindow.hwnd
    With Application
        .OnKey "%{F11}", ""
        .OnKey "{ESC}", ""
        .EnableCancelKey = xlDisabled
        .CommandBars("Toolbar List").Enabled = False
        .CommandBars("Ply").Enabled = False
        .CommandBars("Document").Enabled = False
        .CommandBars.DisableCustomize = True
        Call ControlEnableDisable(1695, False)
        Call ControlEnableDisable(186, False)
        Call ControlEnableDisable(184, False)
        Call ControlEnableDisable(30017, False)
    End With
    LockWindowUpdate Application.VBE.MainWindow.hwnd
End Sub
Public Sub einschalten()
    With Application
        .OnKey "%{F11}"
        .OnKey "{ESC}"
        .EnableCancelKey = xlInterrupt
        .CommandBars("Toolbar List").Enabled = True
        .CommandBars("Ply").Enabled = True
        .CommandBars("Document").Enabled = True
        .CommandBars.DisableCustomize = False
        Call ControlEnableDisable(1695, True)
        Call ControlEnableDisable(186, True)
        Call ControlEnableDisable(184, True)
        Call ControlEnableDisable(30017, True)
    End With
    LockWindowUpdate False
End Sub
Private Sub ControlEnableDisable(intId As Integer, bolStatus As Boolean)
    Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
    For Each myCommandBar In Application.CommandBars
        Set myCommandBarControl = myCommandBar.FindControl(ID:=intId, recursive:=True)
        If Not myCommandBarControl Is Nothing Then myCommandBarControl.Enabled = bolStatus
    Next
End Sub


Makros hat bei mir die ID 30017 und das schalte ich aus. Ich habe entdeckt, wenn ich Excel vorher öffne und darin das Editorfenster, dann komme ich auch wieder an den Code. Das ist jetzt erledigt. Der User kann natürlich immer noch die Makros deaktivieren und so an den Code kommen. Wie das zu verhindern ist, sollte aber bekannt sein.
Gruß
Nepumuk
Anzeige
AW: Code schützen mit pw aber trotzdem nutzbar
Ulf
"Wie das zu verhindern ist, sollte aber bekannt sein."
Nö, wie denn?
Ulf
AW: Code schützen mit pw aber trotzdem nutzbar
03.08.2004 16:46:24
Nepumuk
Hallo Ulf,
ganz einfach. Mappe mit Lese- / Schreibkennwort schützen und ein kleines Programm z.B. mit VB geschrieben, mit der die Mappe geöffnet wird. Damit sind die Makros immer aktiviert, auch wenn der User die Sicherheit auf Hoch setzt. Dem User darf ich natürlich das Kennwort nicht verraten.
Gruß
Nepumuk
AW: Code schützen mit pw aber trotzdem nutzbar
Ulf
Ja klar, ich dachte mit Excelmitteln.
Ulf
AW: Code schützen mit pw aber trotzdem nutzbar
03.08.2004 17:27:13
Nepumuk
Hi Ulf,
ist jetzt noch ne Lücke drin?
Gruß
Nepumukl
AW: Code schützen mit pw aber trotzdem nutzbar
Ulf
Ja, du solltest die Module noch mit Option Private Module versehen, sonst kommt ein findiger user auf die Idee, ein Zeichnungsobjekt einzufügen, und dem ein Makro zuzuordnen. Der Dialog ist nämlich noch immer zugänglich.
Ulf
Anzeige
AW: Code schützen mit pw aber trotzdem nutzbar
04.08.2004 10:03:05
Nepumuk
Hallo Ulf,
danke für den Hinweis. Das ist bei mir schon Standard.
Gruß
Nepumuk
AW: Code schützen mit pw aber trotzdem nutzbar
Manuel
Hi Nepumuk.
Der Code muss unter "Diese Arbeitsmappe", oder?
Wenn ja, da bekomme ich eine Fehlermeldung:
Fehler beim kompilieren:
Konstanten, Zeichenfolgen fester Länge, benutzerdefinierte Datenfelder und Ceclare-Anweisungen sind als Public-Elemente von Objektmodulen nicht zugelassen.
Ich weiss nciht weiter, sry.
Ich weiss, ich nerve..*g*
Gruß Manuel
AW: Code schützen mit pw aber trotzdem nutzbar
03.08.2004 17:51:42
Nepumuk
Hallo Manuel,
der code gehört in ein normale Modul. In das Klassenmodul "DieseArbeitsmappe" kommt folgender Code:


Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    einschalten
End Sub
Private Sub Workbook_Open()
    ausschalten
End Sub


Gruß
Nepumuk
Anzeige
AW: Code schützen mit pw aber trotzdem nutzbar
Manuel
Hi Nepumuk.
Ich habe den Code nun reingeschrieben, nur es kommt beim öffne folgender fehler:
Laufzeitfehler '1004'
Der programmatische Zugriff auf das Visual-Baisc-Projekt ist nicht sicher
Was hat das zu bedeuten?
es wird beim Debuggen folgende zeile makiert:
DestroyWindow Application.VBE.MainWindow.hwnd
Ich verstehe leider nicht den ganzen Code, udn das ist ein Teil, den ich nicht verstehe..
Gruß
Manuel
AW: Code schützen mit pw aber trotzdem nutzbar
03.08.2004 18:14:15
Nepumuk
Hallo Manuel,
du musst unter Makros - Sicherheit - Vertrauenswürdige Quellen ein Häkchen bei:
Zugriff aus Visual Basic-Projekt vertrauen
reinmachen.
Der Anweisung schließt ein eventuell geöffnetes VBA-Editorfenster. Das Ganze nennt sich API (Application Program Interface) und benutzt Programme aus DLL's (Dynamic Link Library). Damit kannst du Sachen machen, die in Excel nicht vorgesehen sind. Google mal nach API.
Wenn du noch andere Erklärungen benötigst, nur zu, fragen kostet nichts.
Gruß
Nepumuk
Anzeige
AW: Code schützen mit pw aber trotzdem nutzbar
Manuel
Hi Nepumuk.
Danke, es klappt.
Bei der "Steuerelemente Toolbox", wenn man dann den editor öffnen möchte kommt "Nicht genügend Speichern" -:LOL!
Naja, danke!
Jetzt habe nur ich zugriff auf die User-tabelle der Benutzerverwaltung und auf den Code, genau so wollte ich es.
Fettes Danke Nepumuk (auch an Udo wegen Lückenfindung)
Gruß
Manuel
PS: Wenn ich Fragen zu API habe, frage ich dich dann
DANKE! [o.T. | geschlossen]
Manuel
.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige