Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Schutz mit Makro aufheben

VBA Schutz mit Makro aufheben
12.05.2016 11:06:06
Gregor
Hallo zusammen
Mit folgendem Code will ich ein Modul in eine andere Datei kopieren. Das funktioniert auch, wenn kein VBA Schutz gesetzt ist. Nun ist aber meine Datei beim Öffnen immer VBA geschützt.
Sub CopyMakro()
Dim vbC As Object
Dim iRow As Integer
Dim sCode As String
On Error GoTo ERRORHANDLER
With ThisWorkbook.VBProject.VBComponents("Mein Modul").codemodule
sCode = .Lines(1, .CountOfLines)
End With
Set vbC = Workbooks(DateiName).VBProject.VBComponents.Add(1)
vbC.codemodule.deletelines 1, vbC.codemodule.CountOfLines
vbC.codemodule.AddFromString sCode
Exit Sub
ERRORHANDLER:
MsgBox "Das Makro konnte nicht kopiert werden!"
End Sub
Im Forum habe ich folgenden Code zum Aufheben des VBA Schutzes gefunden:
Sub 

Sub aufheben() 'VBA-Kennwort aufheben
SendKeys "%{F11}%xi{TAB 9}" & "Mein Kennwort" & "{tab}{enter 2}%q"
End Sub
In meinem Makro rufe ich die beiden code wie folgt auf:
Application.Run "Test.xlsm!aufheben"
Call CopyMakro
Leider wird so der Schutz nicht aufgehoben und deshalb kann auch das Makro nicht kopiert werden.
Wie muss ich das Lösen?
Danke und Gruss
Gregor

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
So gehts ...
12.05.2016 11:30:01
Matthias
Hallo

  • Öffne Deine Datei

  • Öffne die 2.Datei

  • Entferne den VBA-Schutz Deiner geschützten Datei

  • Gehe in den VB-Editor

  • Ziehe das entsprechende Modul von Deiner Datei in die 2.Datei

  • Schließe Deine Datei ohne Speichern

  • Speichere die 2.Datei


Sorry, aber einen Tipp wie man VBA-Passwörter hackt bekommst Du von mir nicht
Gruß Matthias

Anzeige
AW: So gehts ...
12.05.2016 15:34:34
Gregor
Hoi Matthias
Danke für die Rückmeldung. Ich will auch gar keinen Tipp zum Hacken von Passwörter, der VBA-Schutz (Passwort) wird von mir festgelegt.
Ich erstelle für die Benutzer die Möglichkeit, mit Click auf einen Button eine neue Datei zu erstellen, in die ab der Start-Datei mit VBA-Schutz ein vorbereitetes Modul hineinkopiert werden soll. Das Kopieren soll also innerhalb eines Makros erfolgen (kein einmaliger Vorgang). Ab einem VBA-geschützten Editor ist das aber vermutlich nicht möglich, weshalb der Schutz in der Startdatei vorab aufgehoben und beim Schliessen wieder geschützt werden muss.
Vielen Dank und Gruss
Gregor

Anzeige
AW: So gehts ...
12.05.2016 16:08:22
Nepumuk
Hallo,
schreib den Code als Text in eine ausgeblendete Tabelle und von dort aus in ein Modul der neuen Datei.
Gruß
Nepumuk

AW: So gehts ...
12.05.2016 16:35:27
Gregor
Hallo zusammen
Es ist ein recht umfangreiches Makro und die Lösung mit dem Kopieren des Moduls vermutlich viel einfacher. Wenn ich zuerst per Makro den Schutz aufhebe und anschliessend mit dem zweiten Makro mit Kopiercode eine neue Datei erstelle, funktioniert das. Der Benutzer soll jedoch alles mit einem Button auslösen können. Wieso funktioniert das nicht?
Danke und Gruss
Gregor

Anzeige
AW: So gehts ...
12.05.2016 17:01:15
Nepumuk
Hallo,
das hat in Excel2003 noch so leidlich funktioniert sprich von 100mal ist es 70mal gut gegangen. Seit Excel2007 funktioniert es gar nicht mehr.
Gruß
Nepumuk

AW: So gehts ...
12.05.2016 18:57:13
Luschi
Hallo Gregor,
M$ tut Einiges, um das Aufheben des Vba-Kennwortschutzes per Vba zu verhindern. Seit Windows-Vista wurde der Vba-SendKeys-Befehl entschärft (siehe Google), so daß bestimmte Tastenkombinationen (%x)nicht mehr sauber laufen, wenn man versucht, aus einer Excel-Datei den Schutz einer 2. Excel-Datei aufzuheben.
Ein Ansatz, der immer noch funktioniert, ist hier beschrieben:
http://www.excel-inside.de/vba-loesungen/sonstiges/621-vba-passwort-ueber-ein-vba-makro-aufheben.html
Es gibt aber auch hier 1 großes ABER:
- es darf als letzter Befehl nur der Vba-Kennwort aufgehoben werden
- dann muß das Makro sofort beendet werden
- erst mit dem Start eines weiteren Makros per Hand/Button darf der Code-Austausch erfolgen
- sonst waren alle Bemühungen umsonst und der Vba-Schutz besteht weiter!
Gruß von Luschi
aus klein-Paris

Anzeige
Ich bin entsetzt über diese Sicherheitslücke
12.05.2016 19:22:01
Matthias
Hallo
Hab es getestet und ich muss sagen ich bin enttäuscht von MS solche Sicherheitslücken bereitzustellen :-(
Gruß Matthias

AW: Ich bin entsetzt über diese Sicherheitslücke
12.05.2016 19:45:57
Luschi
Hallo Matthias,
das sehe nicht nicht so: das Aufbeben des Vba-KW-Schutzes von innen heraus ist nicht verwerflich, da man ja das Vba-Kennwort in der Datei hinterlegen muß, dessen Vba-Schutz man aufheben will.
Man darf es nur nicht in dieser Form hinterlegen:
Dim vbaKW As String
vbaKW = "qwertz"
Das kann man mit einem Hex-Editor auslesen; gilt auch für VB.Net/C#-Code
Viel schlimmer ist der andere Fall:
- fremde xls, xla, xlsm, xlam, xltm usw. Dateien aus dem Internet
- per C# / VB.Net tausche ich das Vba-KW aus (auch ab Office 2007)
- da seit Office 2000 SP2 !!! die Verschlüsselung des Vba-Schutzes nicht mehr geändert wurde
- (wegen MyLoveYou-Virus)
- es gibt keinen Control-Code innerhalb der Datei, der die Verfälschung merkt.
Gruß von Luschi
aus klein-Paris

Anzeige
ist mir alles klar, Luschi
12.05.2016 20:59:44
Matthias
Hallo
Ich weiß das man das PW nicht im Code hinterlegen soll.
Mach ich auch nie!
Dennoch finde ich es unverantwortlich von MS
Auch solches Insiderwissen weiterzugeben halte ich persönlich für falsch.
Siehe mein letzter Satz in meiner ersten Antwort.
Nur durch Deinen Beitrag habe ich das Testen können
Vorher hatte ich keinen Schimmer das das so geht!
Und ein PW auszuhebeln ist ja wohl für einen versierten Anwender kein Problem mehr.
Gruß Matthias

Anzeige
AW: ist mir alles klar, Luschi
17.05.2016 11:43:50
Gregor
Hallo zusammen
Vielen Dank an alle. Es funktioniert und ja, man muss das Kennwort ja kennen und ich setze das Kennwort selber (Datei-Eigentümer).
Gruss Gregor
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Schutz mit Makro aufheben


Schritt-für-Schritt-Anleitung

Um den VBA Schutz aufzuheben, kannst Du folgenden Schritt-für-Schritt-Plan verwenden:

  1. Öffne die geschützte Excel-Datei.

  2. Stelle sicher, dass Du das Passwort kennst, da es für das Aufheben des Schutzes benötigt wird.

  3. Füge den folgenden VBA-Code in ein Modul ein:

    Sub aufheben() 'VBA-Kennwort aufheben
       SendKeys "%{F11}%xi{TAB 9}" & "DeinKennwort" & "{tab}{enter 2}%q"
    End Sub
  4. Rufe den Code von einem anderen Makro oder direkt in der Excel-Umgebung auf:

    Application.Run "Test.xlsm!aufheben"
  5. Danach kannst Du mit Deinem ursprünglichen Makro, das das Modul kopiert, fortfahren.


Häufige Fehler und Lösungen

  • Fehler: Der VBA-Schutz wird nicht aufgehoben.

    • Lösung: Überprüfe, ob das Passwort korrekt ist. Achte darauf, dass Du den SendKeys-Befehl richtig konfiguriert hast, da dieser in neueren Excel-Versionen nicht immer stabil funktioniert.
  • Fehler: Makro funktioniert nicht in Excel 2007 oder neuer.

    • Lösung: Der SendKeys-Befehl wurde in neueren Versionen von Excel eingeschränkt. In diesem Fall empfehlen wir, die Datei manuell zu öffnen und den Schutz aufzuheben.

Alternative Methoden

Wenn der VBA-Schutz nicht wie gewünscht aufgehoben werden kann, gibt es einige alternative Methoden:

  • Manuelles Aufheben: Öffne die geschützte Datei und entferne den Schutz über den Excel-Editor.
  • Verwendung eines Hex-Editors: Mit einem Hex-Editor kannst Du das Excel-Passwort auslesen. Beachte, dass dies nur für Deine eigenen Dateien und mit Erlaubnis erfolgen sollte.

Praktische Beispiele

Hier ist ein Beispiel, wie Du den VBA-Schutz mit einem Button in Deiner Excel-Anwendung aufheben kannst:

  1. Erstelle einen Button in Excel.

  2. Weise diesem Button ein Makro zu, das den Schutz aufhebt:

    Sub Button_Click()
       Call aufheben
       Call CopyMakro
    End Sub
  3. Klicke auf den Button, um den Schutz und das Kopieren des Moduls gleichzeitig auszuführen.


Tipps für Profis

  • Verwende VBA-Fehlerbehandlung, um sicherzustellen, dass Dein Code nicht abstürzt, wenn der Schutz nicht aufgehoben werden kann.
  • Teste Deinen Code regelmäßig in verschiedenen Excel-Versionen, um sicherzustellen, dass er überall funktioniert.
  • Halte Deine VBA-Projekte gut dokumentiert, damit Du und andere Benutzer den Code leicht nachvollziehen können.

FAQ: Häufige Fragen

1. Kann ich den VBA Schutz ohne Passwort aufheben?
Es ist nicht möglich, den VBA-Schutz ohne das entsprechende Passwort aufzuheben. Du benötigst das Passwort, um den Schutz zu umgehen.

2. Welche Excel-Versionen unterstützen das Aufheben des VBA-Schutzes?
Die Methode funktioniert in Excel 2003, hat jedoch in Excel 2007 und neueren Versionen Einschränkungen durch Microsoft erfahren.

3. Ist es legal, den VBA Schutz aufzuheben?
Das Aufheben des VBA-Schutzes ist nur legal, wenn Du der Eigentümer der Datei bist oder die Erlaubnis des Eigentümers hast.

4. Was kann ich tun, wenn der SendKeys-Befehl nicht funktioniert?
In diesem Fall solltest Du den Schutz manuell aufheben oder alternative Methoden wie den Einsatz eines Hex-Editors in Betracht ziehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige