Registriert seit: 16.03.2018
Version(en): 2007,2016
28.09.2018, 11:27
(Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2018, 11:28 von Florian20.)
Hallo liebes Forum,
Ich habe eine Frage zur Laufzeit.
Ich habe per Makro ein Makro Erzeugt, nun möchte Ich während der Laufzeit auf das neue Makro zugreifen.
Was nicht geht.
Frage:
geht das Überhaupt?
Wenn Ja wie?
Lg Flo
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Flo,
schon probiert? Wie man ein Makro aufruft weißt Du doch

und eventuell auch, wie es mit Application.OnTime geht auch?
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 16.03.2018
Version(en): 2007,2016
Hallo ja das weiß Ich aber so klapp es auch nicht deswegen meine Frage

Lg Flo
Registriert seit: 10.04.2014
Version(en): Office 2007, 2016, Win 10 64 bit
Mit freundlichen Grüßen :)
Michael
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo Florian,
wie sieht dein bisheriges Konstrukt aus?
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
hier mal ein Ansatz. Erstelle eine neue Datei mit einem Modul1 und einem Modul2 und füge den Code ins Modul1 ein.
Code:
Option Explicit
Private Sub CodeBearbeiten()
' Ben?tigte Verweise:
' Microsof Visual Basic for Applications Extensibility 5.3
' Zugriff auf VBA Projekt muss erlaubt sein
' Ein "Modul2" muss vorhanden sein - Anmerkung: Dieses oder
' anderes Modul ebenfalls moeglich
Dim oVBProject As New VBIDE.VBProject, oVbComp As VBComponent
Dim iCodeLines&, sCode$
'VBProjekt dieser Arbeitsmappe zuweisen
Set oVBProject = ThisWorkbook.VBProject
'Modul2 bearbeiten - bei Bedarf Modulname aendern
Set oVbComp = oVBProject.VBComponents("Modul2")
'Mit dem Codemodul
With oVbComp.CodeModule
'String am Anfang hinzufuegen
.AddFromString ("'Test Codemanipulation")
'Zeilen zaehlen
iCodeLines = .CountOfLines
'Makro der Stringvariablen zuweisen
sCode = "Private Sub BitteMeldeDich()" & vbCrLf & _
" MsgBox ""Hallo hier bin ich""" & vbCrLf & _
"End Sub" & vbCrLf & ""
'Macro am Ende dees Moduls hinzufuegen
.InsertLines iCodeLines + 1, sCode
'Mit dem Codemodul
End With
'Erzeugtes Macro aufrufen - geht nur per OnTime da nur
'hiermit Aufruf als String
Application.OnTime Now + TimeValue("00:00:05"), "BitteMeldeDich"
End Sub
Wichtig ist, wie ich schon schrieb, der Aufruf per ...OnTime. Wenn man ein Makro komplett neu erzeugt, dann würde ein direkter Aufruf bei Start des erzugenden Subs die Fehlermeldung bringen, dass das Makro fehlt.
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)