【发布时间】:2017-02-14 16:57:56
【问题描述】:
我正在尝试执行字符串中的 vba 代码,而不将代码写入临时文件。
例如:
Dim code As String
code = "n = 0 : e_i_e = 0 : For e_i_e = 0 To 100 : n+=1 : Next"
我尝试了 Eval、Evaluate、Run、executeGlobal 并添加了一个新模块
Set VBComp = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBComp.Name = "NewModule"
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("NewModule").CodeModule
With VBCodeMod
LineNum = .CountOfLines + 1
.InsertLines LineNum, _
"Sub MyNewProcedure()" & Chr(13) & _
code & Chr(13) & _
"End Sub"
End With
Application.Run "MyNewProcedure"
但所有这些都返回错误 ='(.
谢谢!
【问题讨论】:
-
什么错误,在哪里?
-
你的代码是c#加法,需要
n=n+1 -
@Nathan_Sav 或 VB.NET
-
@BruceWayne OP 不能中断生成的过程,这使得它比普通代码更难调试。也就是说,OP 应该在尝试执行临时字符串之前尝试在正常编译的过程中执行他们的代码字符串。错误会很容易地暴露出来。