

Code in Strings ausführen |
Jeder VB-Programmierer wird sich schon einmal gefragt haben, wie man eigentlich Anweisungen in einer Zeichenkette
ausführen kann, um z.B. eine Art Makrosprache in das Programm einzubauen oder mathematische Ausdrücke ohne
großen Aufwand berechnen zu lassen. Da VB im Unterschied zu manch anderen Programmiersprachen stark
zwischen Strings und dem tatsächlichen Code unterscheidet, muss man sich wie so oft einer API-Funktion bedienen.
Achtung: Leider funktioniert diese API-Funktion derzeit nur in der Entwicklungsumgebung, nicht in kompilierter
Form. Falls Sie eine Idee haben, wie dieses Problem zu lösen ist, mailen Sie mir bitte.
| |
| Bewertung dieses Tipps: |     | (bewertet von insgesamt 24 Besuchern) |

Deklarationen/Funktion |
Um die folgende API-Funktion in eigenen Projekten nutzen zu können,
muss sie zuerst im Kopf der Datei deklariert werden. Ich empfehle Ihnen, diese Deklaration in einem Modul
vorzunehmen, da die Funktion dann später im gesamten Projekt zur Verfügung steht.
Achtung: Bitte deklarieren Sie nur die API-Funktion, die Ihrer VB-Version entspricht!
'VBA (Access, Word, Excel,...)
Private Declare Function EbExecuteLine Lib "vba332.dll" _
(ByVal StringToExec As Long, ByVal Any1 As Long, _
ByVal Any2 As Long, ByVal CheckOnly As Long) As Long
'Vb5
Private Declare Function EbExecuteLine Lib "vba5.dll" _
(ByVal StringToExec As Long, ByVal Any1 As Long, _
ByVal Any2 As Long, ByVal CheckOnly As Long) As Long
'Vb6
Private Declare Function EbExecuteLine Lib "vba6.dll" _
(ByVal StringToExec As Long, ByVal Any1 As Long, _
ByVal Any2 As Long, ByVal CheckOnly As Long) As Long
Function ExecuteCode(Code As String, Optional CheckOnly As Boolean) As Boolean
ExecuteCode = EbExecuteLine(StrPtr(Code), 0&, 0&, CheckOnly) = 0
End Function

Aufruf |
Der Aufruf selbst ist nicht sehr kompliziert, jedoch sind einige Dinge zu beachten:
1. Wenn man in VB innerhalb einer Zeichenkette Anführungszeichen verwenden möchte, muss man diese im String
doppelt notieren. In den folgenden Beispielen werden solche Anführungszeichen in orange eingefärbt. Beispiel:
Variable = "Das folgende Wort steht in Anführungszeichen: ""Beispiel""."
2. Nur globalen Variablen (Public) können Werte zugeweisen werden. Bei folgendem Beispiel wurde
Variable vorher in einem Modul als global deklariert:
Call ExecuteCode("Variable = ""Test""")
3. Genauso verhält es sich mit Steuerelementen. Es muss immer die Form noch mit angegeben werden. Beispiel:
Call ExecuteCode("Form1.Label1.Caption = ""Test""")
Die Funktion ExecuteCode gibt True zurück, wenn alles korrekt ausgeführt wurde, ansonsten False.
Wenn Sie den Code bloß auf richtige Syntax überprüfen wollen, übergeben Sie zusätzlich noch True als zweites
Argument. Auch hier gilt: Ist die Syntax korrekt, gibt die Funktion True
zurück, ansonsten False. Beispiel:
Dim Variable As Boolean
Variable = ExecuteCode("Variable = ""Hier fehlt ein Anführungszeichen am Schluss", True)
Bei diesem Beispiel wird natürlich False zurückgegeben, da
am Ende des Strings ein (bzw. zwei) Anführungszeichen fehlen.

Beispielprojekt |
Hier können Sie sich ein Beispielprojekt für Vb5 und Vb6 herunterladen, das vielleicht alles noch einmal etwas
anschaulicher erklärt.
|
Quellen: SHADOWare.de
Letzte Änderung: 07.08.2000
|
©2000 by SHADOWare, Thomas Bachem
|