Makro mit Makro ändern (mit VBAProject Kennwort)

Bild

Betrifft: Makro mit Makro ändern (mit VBAProject Kennwort)
von: andy
Geschrieben am: 04.05.2015 14:05:19

Hallo Zusammen,
ich möchte gerne per VBA in mehreren hundert, mit VBAProject Kennwort geschützten, Dateien einen VBA Code ändern. Soweit sogut.
Leider funktioniert die Aufhebung des VBAProject Kennwort-Schutzes nur als eigenständiges Makro, welches "von Hand" gestartet werden muß
siehe hier:


Sub VBA_SchutzAufheben()
'Dieses Makro funktioniert nicht mit anderen VBA Befehlen 
'und muss daher immer explizit ausgeführt werden.
    SendKeys ("%{f11}")
    SendKeys "^r{Tab 7}" '^r entspricht "STRG"+ "r" 
                         'Tab7 = 7xTabulator um auf das zu ändernde Project
                         'zu gelangen
    SendKeys ("{Enter}")
    SendKeys ("VBAKW") 'VBA Kennwort
    SendKeys ("{Enter}")
    SendKeys "^~%{F11}", True 'zurück zur Excel-Oberfläche
End Sub

Hat jmd. eine Idee, mit welchem Befehl man den VBAProject Schutz noch aufheben kann? Und diesen Befehl ggf. in ein bestehendes Makro einbinden kann?
Danke für Eure Antworten!
Gruß andy

Bild

Betrifft: Makro mit Makro ändern (mit VBAProject Kennwort)
von: Hajo_Zi
Geschrieben am: 04.05.2015 14:09:56
Hallo Andy,
warum nicht einfach in Deinem Makro
VBA_SchutzAufheben
?


Bild

Betrifft: Makro mit Makro ändern (mit VBAProject Kennwort)
von: andy
Geschrieben am: 04.05.2015 16:16:18
Hallo Hajo,
danke für die schnelle Antwort.
Leider funktioniert die SENDKEYS-Methode (zumindest bei mir) nicht mit anderen Makros.
Habe sogar schon "Wartezeiten" eingestellt siehe:

Sub AllInOne()
Call DateiÖffnen
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 5)
Call VBA_SchutzAufheben 
Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 5)
Call VBAZeileÄndern
End Sub
Nach Ausführung kommt die Fehlermeldung Laufzeitfehler '50289' Die Operation kann nicht durchgeführt werden, solange das Projekt geschützt ist
Wie gesagt, bei manueller Ausführung der Makros läuft alles problemlos durch!
Gruß Andy

Bild

Betrifft: AW: Makro mit Makro ändern (mit VBAProject Kennwort)
von: Luschi
Geschrieben am: 05.05.2015 08:20:12
Hallo andy,
bei mir läuft Windows 8.1 mit Excel 2003, 2010 und 2013.
Bei keiner dieser Varianten läuft Dein Makro und das aus folgenden Gründen:


- ab Windows-Vista hat M$ den Befehl 'Application.SendKeys' entschärft
- d.h. nicht alle Tastenkombination laufen noch so, wie lt. Vba-Hilfe beschrieben
- bestimmte Tastenkombinationen werden von Betriebssystem abgefangen
- google mal nach 'vba vista sendkeys' und die Klagelieder nehmen kein Ende
- Ersatz:
  Dim WshShell As Object
  Dim sVba As String
  sVba = "%{f11}^r ...usw..." 
  Set WshShell = CreateObject("WScript.Shell")
  WshShell.SendKeys sVba, True
- seit Windows-7 mag Vba keine aufgesplitterten SendKeys-Befehle so gern
  wie in Deinem Code
- es muß ein Gesamtstring zusammen gebastelt werden und dann auf die Reise geschickt werden
- "^r{Tab 7}~abcde~" erwartet, das das Vba-Projekt genau an der richtigen Stelle im Vba-Editor
  aufgelistet ist, ansonsten geht es schief
- deshalb bastle ich in 1er Schleife diesen Code stückchenweise zusammen und frage nach
  jedem SendKeys-Befehl das jetzt aktive VbaProjekt ab; Application.VBE.ActiveVBProject. _
Filename
- bis Windows-7 funktionierte das auch wunderbar, aber seit Windows-8 läuft diese
  Schleife nicht mehr sauber durch und mal klappt's oder auch nicht.
Gruß von Luschi
aus klein-Paris
PS: mein Code liegt in einem AddIn
Welches Betriebssystem benutzt Du denn?


Bild

Betrifft: Makro mit Makro ändern (mit VBAProject Kennwort)
von: andy
Geschrieben am: 05.05.2015 09:42:02
Hallo Luschi,
danke für deine Ausführungen. Ich nutze Windows7 als Betriebssystem. Und wie gesagt, das von mir erstellte Makro funktioniert ja auch, nur nicht im Zusammenspiel mit anderen Makros!
Gruß
andy

Bild

Betrifft: AW: Makro mit Makro ändern (mit VBAProject Kennwort)
von: Luschi
Geschrieben am: 06.05.2015 07:41:57
Hallo Andy,
ich kann da nur mit dem Kopf schütteln, wenn das bei Dir unter Windows7 noch so klappen soll. Kannst Du mal eine Demodatei bereitstelle, in der das bei noch noch klappt.
Gerade {Tab 7} ist doch so von Zufall abhängig, denn jede weitere geöffnete Arbeitsmappe/installiertes AddIn verschiebt das gewünschte Vba-Projekt im Vba-Explorer.
Und das Absetzen von Einzel-Sendkeys klappt seit Windows7 bei mit überhaupt nicht mehr.
Bis Windows7 habe ich das auch immer über das Vba-Projektplorer-Menü gemacht "...%xi...", doch Windows 8/8.1 fängt die Tastenkopmbination Alt+x (%x) ab, egal ob mit Alpplication.SendKeys oder WshShell.SendKeys.
Gruß von Luschi
aus klein-Paris

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Makro mit Makro ändern (mit VBAProject Kennwort)"