我的目的是执行用户在文本框中输入的VB代码。并将结果写入数据库中。
以下代码在VB环境中可正常运行,编译后运行出错。
出错信息是:应用程序出现错误,正在生成日志。
日志内容(原文):
“应用程序  产生了一个应用程序错误 此错误发生在 08/03/2005 @ 12:00:24.648 所产生的意外情况为 c0000005,在地址 0FA916F9 (EbMode)处”我用的是 Win2k adv s +sp4+vb6+sp61、请问该如何改进?
2、有没有其他解决方法?Private Declare Function EbExecuteLine Lib "vba6.dll" ( _
ByVal pStringToExec As Long, _
ByVal Unknownn1 As Long, _
ByVal Unknownn2 As Long, _
ByVal fCheckOnly As Long) As LongFunction RunCode(ByVal cmd As String) As Long
    Dim TCmd() As String
    Dim Ti As Long
    Dim Tl As Long    TCmd = Split(cmd, Chr(13) + Chr(10))
    For Ti = 0 To UBound(TCmd())
        Tl = EbExecuteLine(StrPtr(ByVal TCmd(Ti)), 0, 0, 0)
        Text1(1).Text = Text1(1).Text & CStr(Tl) + ":" + TCmd(Ti) & Chr(13) & Chr(10)
    Next
End FunctionPrivate Sub Command1_Click()
    RunCode Text1(0).Text
End SubPrivate Sub Form_Load()
    Dim Tstr As String
    Tstr = Tstr & "'请在此输入VB代码 " & Chr(13) & Chr(10)
    Tstr = Tstr & "dim a as long,b as long,c as long" & Chr(13) & Chr(10)
    Tstr = Tstr & "a=" & 3 & Chr(13) & Chr(10)
    Tstr = Tstr & "b=" & 5 & Chr(13) & Chr(10)
    Tstr = Tstr & "c=" & 2 & Chr(13) & Chr(10)
    Tstr = Tstr & "clipboard.settext (a+b)/c" & Chr(13) & Chr(10)
    Tstr = Tstr & "msgbox Clipboard.GetText"
    Text1(0).Text = Tstr
    Text1(1).Text = ""
End Sub

解决方案 »

  1.   

    http://www.tek-tips.com/viewthread.cfm?qid=97332
    不幸的消息
    只能用在ide环境下
      

  2.   

    上边的链接虽说是不能在编译环境下运行,但也提供了一种变通的方法。
    Dim tempStr As String
        Dim wscript As ScriptControl
        
        Set wscript = New ScriptControl
        wscript.Language = "vbscript"
        
        tempStr = "Msgbox " & Chr(34) & "TEST" & Chr(34)    wscript.ExecuteStatement tempStr