Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
916to920
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
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Austausch von Modulen per Makro

Austausch von Modulen per Makro
23.10.2007 23:12:40
Modulen
Hi Profis,
hab ein Problem mit dem automatisierten Austausch von Modulen: Zunächst soll mit SendKeys das Passwort zur VBA-Umgebung aufgehoben und anschließend sollen zuerst die alten Module gelöscht und danach die aktualisierten Module neu eingefügt werden. Leider geschieht das sehr unzuverlässig: Mal werden die alten Module nicht oder nur teilweise gelöscht, mal werden erst die Neuen (mit falschem Namen) eingefügt und erst dann die alten gelöscht, mal werden die Neuen nicht hinzugefügt und mal in eine andere, ebenfalls geöffnete Datei eingefügt. Woran könnte das liegen? Hier der Code:

Private Sub CommandButton1_Click()
Call VBA_Kennwort("password")
ModuleCodeUpdate
End Sub


Sub VBA_Kennwort(FreiSchaltCode)
SendKeys ("%{F11}"), True
If Application.VBE.ActiveVBProject.Protection Then
Select Case Val(Application.Version)
Case 5 To 8
SendKeys ("%xs" & FreiSchaltCode & "{ENTER}{ENTER}"), True
Case Else
SendKeys ("%xi" & FreiSchaltCode & "{ENTER}{ENTER}"), True
SendKeys ("%Dh"), True
End Select
End If
End Sub


Sub ModuleCodeUpdate()
On Error Resume Next
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modul1")
.VBComponents.Remove .VBComponents("Modul2")
End With
Application.VBE.ActiveVBProject.VBComponents.Import "Pfad\Modul1.bas"
Application.VBE.ActiveVBProject.VBComponents.Import "Pfad\Modul2.bas"
End Sub


Wäre suuuper, wenn mir jemand weiterhelfen könnte!
Vielen, vielen Dank.
Gruß,
Jo

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Austausch von Modulen per Makro
23.10.2007 23:23:00
Modulen
Hallo,
die SendKeys Methode ist immer sehr unzuverlässig, da muss immer alles genau passen.
Reihenfolge der Anordnung usw...
Gruss
Tino

AW: Austausch von Modulen per Makro
24.10.2007 06:58:28
Modulen
Hallo Jochen,
zum Aufheben des Vba-Kennwortes sind ein paar Bemühungen mehr zu trefffen, als man für gewöhnlich in den Internet-Foren zu lesen bekommt (meist nur ein einzeiliger Sendkeys-Befehl). Hier meine Erfahrungen nach unzähligen Testreihen:
- Vba-Editor öffnen
- Fokus in den Projekt-Explorer stellen - ist ganz wichtig!
- in 1 Schleife das passende Vba-Projekt suchen und den Fokus draufstellen
   Die Vba-Projekte sind alphabetisch sortiert und wenn da noch ein paar Add-Ins geladen sind,
dann steht das gesuchte Vba-Projekt nicht immer an 1. Stelle
- und dann erst den berühmten Einzeiler einsetzen
- nochmalige Kontrolle, ob Kennwortschutz augehoben ist
- F e r t i g
Und nach den theoretischen Erklärungen die Praxis:

Public Sub Entschuetzen(vba_KW As String, xDatei As String)
''Achtung: in dieser Datei muß folgender Verweis gesetzt sein: _
Microsoft Visual Basic for Application Extensibility 5.3
''getestet in Excel XP /2003 /2007
Dim wb As Workbook, ok As Boolean, s As String
Set wb = Application.Workbooks(xDatei)
''MsgBox vba_KW
If wb.VBProject.Protection = vbext_pp_locked Then
Set wb = Application.Workbooks(xDatei)
'ganz wichtig
'Vba-Editor öffn en und Fokus in den Projekt-Explorer stellen
SendKeys "%{F11}^r{Tab}", True
Do While Application.VBE.ActiveVBProject.Filename  wb.FullName
''Cursor im Projekt-Explorer-Fenster auf das nächste Projekt setzen _
bis er auf dem aktuelle Projekt der zu entschützenden Arbeitsmappe steht
SendKeys "{Tab}", True
''End If
Loop
''MsgBox "%xi" & vba_KW & "{ENTER}{Tab 6}{ENTER}"
'erst ab Excel 2000!!!
s = "%xi" & vba_KW & "{ENTER}{Tab 6}{ENTER}"
SendKeys s, True
If wb.VBProject.Protection = vbext_pp_none Then
s = "Vba-Code ist entsperrt!"
'entsperrtes Projekt öffnen & zurück zur Excel-Oberfläche
SendKeys "^~%{F11}", True
Else
'nochmaliger Versuch - ist aber kaum nötig
If Application.VBE.ActiveVBProject.Filename = wb.FullName Then
s = "%xi" & vba_KW & "{ENTER}{Tab 6}{ENTER}"
SendKeys s, True
If wb.VBProject.Protection = vbext_pp_none Then
s = "Vba-Code wurde entsperrt!"
Else
s = "Vba-Code wurde leider nicht entsperrt!"
End If
End If
End If
Else
s = "Vba-Code ist nicht geschützt!"
End If
MsgBox s, 64
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
AW: Austausch von Modulen per Makro
24.10.2007 10:01:00
Modulen
Hallo,
zu dem anderen Lösungsvorschlag, musst du die Sicherheitseinstellungen
umstellen.
Du musst dem Zugriff auf VBA-Prjekte vertrauen. sonst geht’s nicht.
Extras-Optionen-Sicherheit-Makrosicherheit
Userbild
Gruss
Tino

AW: Austausch von Modulen per Makro
24.10.2007 21:29:03
Modulen
Super, erstmal vielen Dank für die große Mühe!! Muss ich erstmal richtig ausprobieren. Erstmal vielleicht noch eine Anschlussfrage: Mein Hautproblem liegt im Austausch der Komponenten - das Aufheben des Passwortes funktioniert sogar immer. Kann es aber danach sein, dass ich mit dem Hinweis von dir, erst das richtige Projekt auswählen zu müssen, dieses Problem dann auch erschlage?
Grüße,
Jo

Anzeige
AW: Austausch von Modulen per Makro
24.10.2007 23:07:21
Modulen
Hallo Jochen,
ich habe mir für die Sache mit dem Export/Import/Vba-Kennwort ein AddIn geschrieben. Darin siehr die Import-Zeile so aus:
Set wb1 = Application.Workbooks(xWb)
wb1.VBProject.VBComponents.Import "c:\...\Module1.bas"
Wobei wb1 die geöffnete Arbeitsmappe ist, in der das Vba-Modul importiert werden soll.
Gruß von Luschi
aus klein-Paris

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige