如何象SQL语句中的Exec那样在VB中执行一段代码?

博客介绍了利用API引用vb6a.dll实现字符串命令执行和表达式运算,但该dll只能用于IDE环境,编译后会出错。经查找资料未能完美解决此问题,最后提出使用ScriptControl控件调用更方便,给出的代码在编译前后都能正确运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用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.youkuaiyun.com/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

上述代码在编译前后都能正确运行.

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值