如何象SQL语句中的Exec那样在VB中执行一段代码?
2004-10-20 22:59
706 查看
利用API 引用vb6a.dll (Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long)可以实现字符串命令的执行和字符串表达式的运算(http://blog.csdn.net/northwolves/archive/2004/04/05/19592.aspx),但由于VB6a.dll只能应用于IDE 环境,程序一经编译,必然出错,无法生成可执行文件.
如:
Option Explicit
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Private Sub Command1_Click()
ExecuteLine "dim pi as double"
ExecuteLine "pi= 4*atn(1)"
ExecuteLine "msgbox ""Pi=""& pi"
End Sub
如何解决这个问题,查了许多资料,包括在许多论坛上的讨论,也没能完美解决.个人认为还是ScriptControl控件调用方便些:
Option Explicit
Sub Main()
Dim scr As Object, mysub As String
Set scr = CreateObject("MSScriptControl.ScriptControl")
mysub = "sub msg()" & vbCrLf
mysub = mysub & "MsgBox ""今天是"" & WeekdayName(Weekday(Date)) & ""!"", vbOKCancel + vbInformation, ""提示"""
mysub = mysub & vbCrLf & "end sub "
scr.Language = "vbscript"
scr.AddCode mysub
scr.ExecuteStatement "msg"
Set scr = Nothing
End Sub
上述代码在编译前后都能正确运行.
如:
Option Explicit
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As Long
Private Function ExecuteLine(sCode As String, Optional fCheckOnly As Boolean) As Boolean
ExecuteLine = EbExecuteLine(StrPtr(sCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Private Sub Command1_Click()
ExecuteLine "dim pi as double"
ExecuteLine "pi= 4*atn(1)"
ExecuteLine "msgbox ""Pi=""& pi"
End Sub
如何解决这个问题,查了许多资料,包括在许多论坛上的讨论,也没能完美解决.个人认为还是ScriptControl控件调用方便些:
Option Explicit
Sub Main()
Dim scr As Object, mysub As String
Set scr = CreateObject("MSScriptControl.ScriptControl")
mysub = "sub msg()" & vbCrLf
mysub = mysub & "MsgBox ""今天是"" & WeekdayName(Weekday(Date)) & ""!"", vbOKCancel + vbInformation, ""提示"""
mysub = mysub & vbCrLf & "end sub "
scr.Language = "vbscript"
scr.AddCode mysub
scr.ExecuteStatement "msg"
Set scr = Nothing
End Sub
上述代码在编译前后都能正确运行.
相关文章推荐
- 如何象SQL语句中的Exec那样在VB中执行一段代码?
- 如何在JAVA代码中执行 exec master..xp_cmdshell @cmd // 当作SQL语句调用就成了 或者调用 Runtime.getRuntime().exec
- 如何在c#代码中执行带GO语句的SQL文件
- [转载代码]VB.NET 中查询 Linq to SQL 执行时的SQL语句
- (SQL)如何将exec执行结果放入外面的变量中--动态sql语句
- 如何在c#代码中执行带GO语句的SQL文件
- 如何获取sql的exec执行语句的返回值?
- 如何定位mysql中执行很慢的sql 语句
- 存储过程中用exec执行sql语句问题
- PHP mysqli 增强 批量执行sql 语句的实现代码
- Access2010中如何运行SQL执行SQL语句
- 如何将exec执行结果放入外面的变量中--动态sql
- 如何在存储执行中,查询某条sql语句的执行计划。
- (性能优化篇)如何获得j2ee应用所执行的SQL语句
- php与mysql建立连接并执行SQL语句的代码
- IAR下如何确定某一段代码的执行时间
- 如何在后台代码中执行原生sql?
- 如何测试sql语句性能,提高执行效率
- 写一段java代码让if else里面的语句都执行到