Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1012to1016
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

Makro per Makro erstellen

Makro per Makro erstellen
10.10.2008 13:05:00
Olaf
Hallo Leute,
ich habe eine Frage:
Ist es möglich, ein Makro mit Hilfe eines anderen Makros zu erstellen?
Vorgehensweise sollte sein: User gibt verschiedene Daten und Optionen an. Mit einem Makro werden diese Angaben ermittelt und ein neues Makro entsprechend erstellt und ausgeführt. Geht das irgendwie? Die Möglichkeit, die ermittelten Daten in ein Sheet zu schreiben und mit dem dem zweiten Makro dieses Daten abzufragen kommt aufgrund der Komplexität des Themas nicht in Frage, Da das Makro ansonsten tausende Zeile Code beinhalten würde. Ich möchte aber schlanke und der Anforderung entsprechende Markos erstellen.
Vielen Dank für brauchbare Infos!
Euer Olaf

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro per Makro erstellen
10.10.2008 13:13:14
Gerd
Hi,
das ist prinzipiell möglich, wenn der Zugriff auf das VBA-Projekt erlaubt ist und wenn dieses nicht
geschützt ist.
mfg Gerd
AW: Makro per Makro erstellen
10.10.2008 14:00:51
Luschi
Hallo Olaf,
das Makro, das ein anderes Makro erstellt, ist größer, als das entstehende Makro selbst. Also mit 'schlank' und so ist da nix; außerdem sind das dann ja schon 2 Makros.
Ich würde diese Idee schnell wieder beiseite schieben; das entstehenden Makro muß ja auch getestet werden und dann kommt noch die Fehlerquelle bei der Umsetzung des Makros dazu, das das eigentliche Makro erstellen soll: das kann nicht gut gehen.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Makro per Makro erstellen
10.10.2008 14:49:42
Olaf
Hallo nochmal,
ja deine Ängste hatte ich anfangs auch. Das Problem ist aber ich habe 1.294 Tabellen, die maximal bis 238 Spalten beinhalten. Für jede Tabelle gibt es zig Import und Export Parameter, um auf den Server zu connecten. Diese müsste ich alle mitgeben und einzelnd abfragen. Das ist nicht nur zeitintensiv sondern auch eine Frage der Dateigröße. Daher kommt für mich nur die Variante der Makroerstellung in Frage.
Mfg
Olaf
AW: Makro per Makro erstellen
10.10.2008 15:09:00
Nepumuk
Hallo Olaf,
Code ist doch nur Text. 4.000 Zeilen Code sind gerade mal 200 KB. Also denke ich bei einer Mappe mit fast 1.300 Tabellen nun wirklich das kleinere Problem.
Und wie Luschi schon schrieb, ein Makro welches ein Makro erzeugt ist fast immer größer als das Makro welches es erzeugen kann.
Außer du erzeugst in einer Schleife die selbe Codezeile mehrfach. Aber das macht ja nun wirklich kleinen Sinn.
Ein vernünftig geschriebenes Programm wird 400 verschiedene Bedingungen in maximal 1.000 Zeilen Code verarbeiten können.
Gruß
Nepumuk
Anzeige
AW: Makro per Makro erstellen
10.10.2008 15:09:47
ransi
HAllo Olaf
Lege dir die Codes in TExtdateien ab.
Die kannst du recht einfach importieren.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub machs()
Dim Neu As VBComponent
Set Neu = Application.VBE.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule)
With Neu
    .Name = "Mein_Modul"
    .CodeModule.AddFromFile ("C:\Code1.txt")
End With
End Sub

ransi
Anzeige
AW: Makro per Makro erstellen
10.10.2008 15:22:00
Olaf
Hallo,
Ich habe bereits Tests durchgeführt, die mir gezeigt haben, das meine Methode einfach praktisch besser ist. Das neu erzeugte Modul wird zudem in eine neue File ausgelagert.
@ Ransi
Ich bekomme folgende Fehlermeldungen:
Die Methode 'ADD' für das Object _VBComponents ist fehlgeschlagen
Zudem kommt bei VBComponent folgende Meldung:
Benutzerdefinierte Befehl nicht definiert
AW: Makro per Makro erstellen
10.10.2008 15:32:11
ransi
HAllo
Wie Luschi und Nepumuk schon geschrieben haben:
Lass die Finger von dem Vorhaben und programmier die 1000 Zeilen Code...
Wenn du Programmcode mit Programmcode schreiben willst, müssen einige Vorraussetzungen geschaffen sein:
Es muss ein Verweis auf:
Microsoft Visual Basic for Applications Extensibiltys vorhanden sein.
Den kannst du evtl. noch mit deinem Code erzeugen.
Wo du aber wahrscheinlich scheitern wirst ist hier:
Menu Extras--Makro--Sicherheit--Register Vertrauenswürdige Quellen--"Zugriff auf Visual Basic-Project vertrauen"
und hier:
Menu Extras--Makro--Sicherheit--Register Sicherheitsstufe--Mittel oder Hoch.
Dies 2 Einstellungen kannst du nicht so ohne weiteres mit Code erreichen.
Die sind aber zwingend notwendig.
ransi
Anzeige
AW: Makro per Makro erstellen
10.10.2008 15:38:47
Nepumuk
Hi ransi,

Es muss ein Verweis auf:
Microsoft Visual Basic for Applications Extensibiltys vorhanden sein.


Wozu? Den habe ich noch nie gesetzt. Es ist eher so, dass wenn du nicht mit frei definierten Objekten arbeitest, sondern mit den Objecten aus der OLB, die Aufmerksamkeit von Vierenscannern erregst.
Gruß
Nepumuk

AW: Makro per Makro erstellen
10.10.2008 15:49:02
ransi
Hallo Nepumuk
Wieder was gelernt.
Meinst du so ?
Option Explicit


Sub machs()
Dim Neu As Object
Set Neu = Application.VBE.ActiveVBProject.VBComponents.Add(1)
With Neu
    .Name = "Mein_Modul"
    .CodeModule.AddFromFile ("C:\Code1.txt")
End With
End Sub

ransi
Anzeige
AW: Makro per Makro erstellen
10.10.2008 15:52:00
Olaf
Hallo Leute,
so, hab jetzt nen lauffähiges Beispiel hinbekommen:
Für alle die es interessiert:
Set file = Workbooks.Add
file.VBProject.VBComponents.Add 1
file.VBProject.VBComponents(file.VBProject.VBComponents.Count).Name = "ModulModul"
With file.VBProject.VBComponents("ModulModul").CodeModule
.InsertLines 1, "

Sub Test()"
.InsertLines 2, "Msgbox " & Chr(34) & "Test" & Chr(34)
.InsertLines 3, "End Sub

"
End With
Den Rest bekomme ich alleine hin. Das Problem an der Sache ist, das die VBPorject Befehle scheinbar nicht kommentiert sind. Da muss man leider mehr rumprobieren. Aber vielen Dank für die hilfreiche Ansätze @ All

Anzeige
AW: Makro per Makro erstellen
10.10.2008 15:55:31
Nepumuk
Hi ransi,
JA !!!
Gruß
M.
AW: Makro per Makro erstellen
10.10.2008 14:08:32
Olaf
Das sollte nicht das Problem sein. Kannst du mir ein einfaches Beispiel zeigen, wie ich mir mittels eines Makros ein neues Makro erstellen kann? Wie bastele ich mir mein neues Makros mit den von mir benötigten Funktionen zusammen und kopiere diese in das "Modul" einer neuen Mappe? Vielen Dank für deine Hilfe!
AW: Makro per Makro erstellen
10.10.2008 15:59:00
Olaf
Eine Sache habe ich ganz vergessen:
Wie mache ich es, das der Visual Basic Editor beim Ausführen des Codes nicht geöffnet wird, sondern das Ganze quasie im Hintergrund geschieht? Der User soll das Ganze nicht mitbekommen.
AW: Makro per Makro erstellen
10.10.2008 16:01:32
Olaf
Edit: Der Befehle
Application.VBE.mainwindow.Visible = False
scheint der richtige zu sein, nur funktioniert er nur beim ersten Aufrufen ?!?!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige