VBA Während Laufzeit Code einfügen

Hallo zusammmen,

Ich hatte letzte Woche Praktikum und war u.a. bei einem Programmierer. Den fragte ich dann ob es möglich sei, während der Laufzeit einen Code aus bsp. .txt-Datei einen Code zu laden und diesen dann ausführen.

Beispiel:

.txt-Datei:

msgbox „Hallo“


Excel-Code:
Sub laden()
???
End Sub

Hat jmd. eine Idee

Grüße dbma

Hallo dnbma,

Ich hatte letzte Woche Praktikum und war u.a. bei einem
Programmierer. Den fragte ich dann ob es möglich sei, während
der Laufzeit einen Code aus bsp. .txt-Datei einen Code zu
laden und diesen dann ausführen.

Und, was hat er gesagt? War es ein Excel-Vba-Programmierer?
Was war das für ein Praktikum?

Prinzipiell geht das. Man kann zur Laufzeit ein Modul samt Code erstellen oder in ein bestehendes Modul Code einfügen und dann diesen ausführen lassen.
Leider habe ich dafür keinen fertigen Code, deshalb warte ich mal ab ob Thomas o. jmd. anders was Fertiges hat.
Ansonsten schaue ich dann mal wie ich das hinbastle.

Gruß
Reinhard

und es ist kotzschlechter Stil…
und es ist ein Sicherheitsrisiko…
und es benötigt Sonderrechte im Sicherheitskonzept
und es schlecht zu pflegen und zu warten
und wenn man sein Handwerk gelernt hat, dann lässt man die Finder davon

Gruß HW

danke schon mal für die Atworten!

und es ist kotzschlechter Stil…
und es ist ein Sicherheitsrisiko…
und es benötigt Sonderrechte im Sicherheitskonzept
und es schlecht zu pflegen und zu warten
und wenn man sein Handwerk gelernt hat, dann lässt man die
Finder davon

Wiso, ich würde die Codes ja selber machen…

Praktikum war as Fachinformatiker.

dann habe ich halt mal an dem tag wo ich beim Programmierer war gefragt. Er wusste es zwar auch nicht genau aber meinen prizipiell sollte es funzen. Allerdings ist dann ein Server abgestürzt und dann wurde der Code im Hinntergrund / nichts gestellt. Er war VBA-Progrmmierer allerdings mit Access.

Ich freu mich dann schon mal auf andere Antworten.

Grüße dnbma

Hallo Hans,

und es ist kotzschlechter Stil…

warum genau?

und es ist ein Sicherheitsrisiko…
und es benötigt Sonderrechte im Sicherheitskonzept

Das Leben ist immer lebensgefährlich und Vba laufen zu lassen auch, oder meinst du was Spezielles?

und es schlecht zu pflegen und zu warten

Warum genau?
Ggfs. bestücke ich zur Laufzeit eine Userform erst in Abhängigkeit von irgednwas mit einer davon abhängigen Anzahl an Textfeldern, CommandButtons u.ä.
Da kann ich doch leicht Größen und Postionen situativ abändern.

und wenn man sein Handwerk gelernt hat, dann lässt man die
Finder davon

Bin noch Lehrling :smile:

Gruß
Reinhard

Grüezi dnbma

Ich hatte letzte Woche Praktikum und war u.a. bei einem
Programmierer. Den fragte ich dann ob es möglich sei, während
der Laufzeit einen Code aus bsp. .txt-Datei einen Code zu
laden und diesen dann ausführen.

Excel-Code:
Sub laden()
???
End Sub

Hat jmd. eine Idee

Ja, sowas ist durchaus möglich, einen ersten Ansatz dazu findest Du hier:

http://www.office-loesung.de/ftopic229695_0_0_asc.php

und weitere Ausführungen hier:

http://www.office-loesung.de/ftopic192212_15_0_asc.p…

Ich würde mir aber überlegen, den Code komplett in ein AddIn auszulagern und die einzelnen Mappen ‚dumm‘ zu lassen, was VBA anbelangt.
Allenfalls könntest Du entsprechend vorbereitete Vorlagen verwenden, das ist IMO immer noch sinnvoller.

Oder aus welchem Grund wolltest Du Code zur Laufzeit in einer Mappe erzeugen?


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Danke für die Antworten. Ich versuche mich zurecht zu finden.

Grüße
dnbma

Warum es schlechter Stil ist Code zu produzieren der sich selber manipuliert muss doch nicht wirklich erklärt werden? Viren und Trojaner machen das…

Und dass wegen selbstmanipulierendem Code das XL-Sicherheitskonzept quasi abgeschaltet/geändert werden muss führt notgedrungen dazu, das der Code nicht portabel ist - in einer Firmenumgebung mit zentralem Admin-Richtlinien wird das gar nicht erst möglich sein der entsprechenden Schalter umzulegen.

Wartbarkeit
Dann nimm Deinen Code nach einem Jahr wieder in die Hand und ändere oder überarbeite ihn mal, ganz zu schweigen, wenn jemand anderes da was dran ändern soll.

Wenn DU z.B: Formen zur Laufzeit veränderst, dann muss DU doch keinen Code zur Laufzeit manipulieren, Du legst die benötigten Klassen vorher an und verheiratest Code und Steuerelement zur Laufzeit. Warum oder was bedingt da ein Einfügen von Code zur Laufzeit?

Gruß HW

Hallo Hans,

Warum es schlechter Stil ist Code zu produzieren der sich
selber manipuliert muss doch nicht wirklich erklärt werden?
Viren und Trojaner machen das…

wenn Virenscanner nach der Bytefolge 0D 12 AF B2 … Ausschau halten würde ich als Virenhersteller auch dafür sorgen daß diese Bytefolge in meiner Exe-Datei nicht auftaucht.
Er wird dann erst zur Laufzeit erzeugt…
Wäre zumindest mein Ansatz.

Mir ist aber noch unklar warum das grundsätzlich schlechter Stil ist, jetzt nicht die Virenherstellung sondern Code zur Laufzeit verändern.

Und dass wegen selbstmanipulierendem Code das
XL-Sicherheitskonzept quasi abgeschaltet/geändert werden muss
führt notgedrungen dazu, das der Code nicht portabel ist - in
einer Firmenumgebung mit zentralem Admin-Richtlinien wird das
gar nicht erst möglich sein der entsprechenden Schalter
umzulegen.

Da kenne ich mich nicht aus. Ich denke mir Admins können das Ausführen von VBA-Code blockieren. Aber wenn Vba zugelassen ist können sie nix mehr stoppen von dem was das Makro macht.
Mal Zugriffsrechte auf dateien/Ordner weglassend.

Wartbarkeit
Dann nimm Deinen Code nach einem Jahr wieder in die Hand und
ändere oder überarbeite ihn mal, ganz zu schweigen, wenn
jemand anderes da was dran ändern soll.

Kein Problem wenn ich ihn gut dokumentiert habe.

Wenn DU z.B: Formen zur Laufzeit veränderst, dann muss DU doch
keinen Code zur Laufzeit manipulieren, Du legst die benötigten
Klassen vorher an und verheiratest Code und Steuerelement zur
Laufzeit. Warum oder was bedingt da ein Einfügen von Code zur
Laufzeit?

Ähem, nix :smile: Da haste irgendwie Recht.

PS: Bist du da damals zu einem Ergebnis gekommen?
/t/forms-und-vbscript/4800897
Hier, ich glaube im VB-Brett, fragt jmd. das Gleiche an.

Gruß
Reinhard