Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1088to1092
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
Inhaltsverzeichnis

Modul und Makro zur Laufzeit erzeugen?

Modul und Makro zur Laufzeit erzeugen?
Kasimir
Hallo an alle!
Dank der Hilfe von hier ist es mir nun möglich, ein neues Modul zur Laufzeit erzeugen. Nun habe ich das Makro erstellt, welches mir eine neue Datei erzeugt, in der neuen Datei ein Modul mit einem Makro anleget und im 1. Tabellenblatt einen Button zum Aufrufen des Makros erzeugt. Klicke ich nun auf den Button, kann das Makro nicht gestartet werden, da beim Anklicken des Buttons immer versucht wird, das Makro in der Datei, aus der ich das neue Modul und das neue Makro erzeuge, zu starten.
Beispiel: ich starte das Makro zum Erzeugen der Datei, des Moduls und des Makros in Datei „Mappe1.xls“. Es wird eine neue Datei mit dem Namen „Mappe2.xls“ mit dem Modul, dem Makro und dem Button im 1. Tabellenblatt erzeugt. Klicke ich nun auf den neuen Button in „Mappe2.xls“, wird versucht das Makro in Datei „Mappe1.xls“ zu starten. Das erzeugt natürlich einen Fehler, da es ja nicht in der Datei „Mappe1.xls“ vorhanden ist.
Nachfolgend mal mein momentanes Makro. Was mache ich darin falsch?
Sub Test()
Dim objNewWorkbook      As Workbook
Dim objModul            As Object
Set objNewWorkbook = Application.Workbooks.Add
Set objModul = Application.VBE.ActiveVBProject.VBComponents.Add(1)
objModul.Name = "Modul_UserForm_oeffnen"
With objNewWorkbook.VBProject.VBComponents("Modul_UserForm_oeffnen").CodeModule
.InsertLines 3, "

Sub UserForm_oeffnen()"
.InsertLines 4, "frm_TestUserForm.Show"
.InsertLines 5, "End Sub
"
End With
objNewWorkbook.Sheets(1).Buttons.Add(63, 14.25, 115.5, 21).Select
With Selection
.OnAction = "UserForm_oeffnen"
.Font.Name = "Arial"
.Font.FontStyle = "Fett"
.Font.Size = 10
.Font.ColorIndex = 5
.ShapeRange.Height = 28.5
.ShapeRange.Width = 115.5
.Characters.Text = "UserForm öffnen..."
End With
Set objNewWorkbook = Nothing
Set objModul = Nothing
End Sub
Danke und Gruß,
Kasimir

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Jede Codezeile einzeln einfügen - UF fehlt
22.07.2009 17:59:13
NoNet
Hallo Kasimir,
Du musst jedeo Codezeile einzeln in das Modul einfügen :
    With objNewWorkbook.VBProject.VBComponents("Modul_UserForm_oeffnen").CodeModule
.InsertLines 1, "Sub UserForm_oeffnen()"
.InsertLines 3, vbTab & "frm_TestUserForm.Show"
.InsertLines 4, "End Sub"
End With
Weiterhin ist der neu erzeugte Button mit dem Makro aus der "alten" Mappe (nicht mit der neu erstellten Mappe !) verknüpft. Du möchtest den Button aber wohl mit "SUB UserForm_Oeffnen()" der neu erstellten Mappe verbinden - das funktioniert so :
        .OnAction = objNewWorkbook.Name & "!UserForm_oeffnen"
Natürlich fehlt in der neu erzeugten Mappe auch noch das UserForm frm_TestUserForm, das durch das Makro angezeigt werden soll ;-)
Gruß, NoNet
Anzeige
AW: Jede Codezeile einzeln einfügen - UF fehlt
22.07.2009 18:10:07
Kasimir
Hallo NoNet
danke Dir für Deine Antwort. Das was ich brauchte war die Codezeile
.OnAction = objNewWorkbook.Name & "!UserForm_oeffnen"
Gruß,
Kasimir

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige