Toon posts:

[VBA / Access]Sub uitvoeren vanuit een string

Pagina: 1
Acties:
  • 126 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ola,

Dit is er eentje voor de echte VBA guru's.

Ik wil graag een regel code uitvoeren die ik binnen krijg
als string.
Hierbij gebruik ik de application.Run functie om sub uit
te voeren. Echter deze functie voert alleen subs uit die
direct bij application bekend zijn. Het is dus niet
mogelijk om sub binnen een object uit te voeren (zoals een
formulier).

Ik maakte hiervoor gebruikt van het ActiveX object
ScriptControl, maar daarbij kreeg ik problemen door een
verschillende werking bij verschillende OS's.

Ik ben dus opzoek naar een functie met de volgende aanroep:

Sub RunCode(objObject as object, strSub)
????
End Sub

Met dank,
Arnold

  • !AnacondA!
  • Registratie: December 2001
  • Laatst online: 12-04-2021
k heb daar ook n keer naar gezocht, en gevonden.

Het bleek alleen langzamer te zijn dan ge woon te kijken in de string en het dan uit te voeren met een "if" constructie.

bv:
string$="timer1.enbaled = false"
if right(string$, 5) = "false" then
timer1.enabled = false
else
timer1.enabled = true
end if

De code voor het uitvoren van n string ben ik nu helaas kwijt... de pc waar t opstaat krijg ik pas weer over n maand ofzo... zoek anders es op "planetsourcecode.com"

Laptop: ATI mobility 9800 P4 3.4Ghz Server: AMD 2400+ Epox 8k3A+


  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 28-04 19:57

gvdh81

To got or not to got..

inderdaad, www.planetsourcecode.com

Hier staat dat Eval() er wel is in MsAccess, maar niet in VB. Ze geven tevens een oplossing hoe je het wel in VB voor mekaar kunt krijgen.
http://www.a1vbcode.com/vbtip.asp?ID=3

Verwijderd

[onzin]

Verwijderd

Topicstarter
anaconda, ehh... waar slaat dat antwoord op? Tenminste niet op mij vraag. Maar toch bedankt... denk ik.

Xces, tsja... onder die link krijg ik een uitleg over ScriptControl, maar wat ik al zei in mijn eerste bericht: dat werk niet lekker.

Verder werk ik onder access, het probleem is alleen dat de Eval functie alleen voor functions en niet voor subs werkt.
Omdat er achter bijv. een afterupdate actie een sub staat bij een control, wil ik perse subs binnen een object kunnen uitvoeren.
Globale subs kan ik wel aan roepen met de Application.Run functie.

Arnold

  • !AnacondA!
  • Registratie: December 2001
  • Laatst online: 12-04-2021
je wilt toch een opdracht uirvoeren die in een string staat?
....
iig heb ik hier de code om dat te doen:
module1:
Option Compare Text
Option Explicit

Declare Function EbExecuteLine Lib "vba6.dll" _
(ByVal pStringToExec As Long, ByVal Foo1 As Long, _
ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long

-----------------------------------------------

Function FExecuteCode(stCode As String, _
Optional fCheckOnly As Boolean) As Boolean
FExecuteCode = EbExecuteLine(StrPtr(stCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function

form1:
Private Sub Command1_Click()
stringcode = "end"
FExecuteCode (stringcode)
End Sub
---------------------------------

klik je nu op command1, dan sluit t programma af...je voert dus een string uit waarin "end" staat.

Laptop: ATI mobility 9800 P4 3.4Ghz Server: AMD 2400+ Epox 8k3A+

Pagina: 1