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

per Code Module und UserForms austauschen

per Code Module und UserForms austauschen
18.10.2007 15:11:00
Jochen
Hallo zusammen,
aus einer Arbeitsmappe wird per Commandbutton4 zunächst das Passwort der VBA-Umgebung aufgehoben und anschließend Module und UserForms ausgetauscht. Das funktioniert jedoch korrekt nur, wenn ich vorher bereits im Code war, also das VBA-Kennwort aufgehoben und ein Codefenster aktiviert habe. Erstmal der Code:
Teil 1 - der Code nach Klick auf CommandButton4:

Private Sub CommandButton4_Click()
'Update Tool - Aufruf Passwort aufheben und Austausch der Module und UserForms
Dim box
box = InputBox("Passwort für Tool-Update!")
If box = "aktual" Then
Call VBA_Kennwort("key")
ModuleCodeUpdate
Else
MsgBox ("Passwort nicht korrekt!")
End If
End Sub


Teil 2: Code für Aufheben des Passworts:
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


Teil 3: Das Modul Codeupdate zum Austausch der Module und UserForms:
Sub ModuleCodeUpdate()
'Löscht die vorhandenen Module und UserForms aus dem aktiven Workbook
On Error Resume Next
With ActiveWorkbook.VBProject
.VBComponents.Remove .VBComponents("Modul2")
.VBComponents.Remove .VBComponents("UserForm1")
.VBComponents.Remove .VBComponents("UserForm2")
.VBComponents.Remove .VBComponents("UserForm3")
End With
'Import Module
Application.VBE.ActiveVBProject.VBComponents.Import _
"O:\Komponenten\Zentrale\Module\Modul2.bas"
'Import UserForms
Application.VBE.ActiveVBProject.VBComponents.Import _
"O:\Komponenten\Zentrale\UserForms\UserForm1.frm"
Application.VBE.ActiveVBProject.VBComponents.Import _
"O:\Komponenten\Zentrale\UserForms\UserForm2.frm"
Application.VBE.ActiveVBProject.VBComponents.Import _
"O:\Komponenten\Zentrale\UserForms\UserForm3.frm"
End Sub


Wenn ich den Button4 (so wie gedacht) "einfach so" nach Öffnen der Datei ausführe, werden manchmal die Module und UserForms nur gelöscht aber keine neuen eingefügt. Meistens aber werden alle Komponenten korrekt ausgetauscht, das Modul2 wird jedoch Modul21 genannt, weil anscheinend zuerst das neue Modul eingefügt wird und erst dann das alte gelöscht wird.
Hat vielleicht jemand einen Tipp, warum das so ist und wie ich das ändern müsste?
Vielen Dank und schöne Grüße,
Jochen

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per Code Module und UserForms austauschen
18.10.2007 15:46:58
Jochen
Hallo,
noch eine Ergänzung. Nach und nach habe ich Standard-VBA-Mappen gefunden: atpvbaen.xls, funcres.xla (beide passwortgeschützt) und "VBA Project (PERSONL.xls)" ohne PW-Schutz. Wie kann ich denn zumindest die PERSONL.xls wieder löschen? Durch mein Aktualisierungsmakro werden die Module und Userforms teilweise nämlich auch dort angefügt...
Vielen Dank und schöne Grüße,
Jochen
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige