VBA 如何把字元串轉換為可執行語句?
譬如一下代碼
dim a as stringa="msgbox hello"然後執行a,結果和執行 msgbox 「hello」 相同
問題:有什麼函數或者方法在程序中執行變數a所包含的語句
可以利用VBA的工程對象模型(VBA Project Object Model)實現這個目的.
(以下截圖使用的是Excel 2013, 其它版本的Excel也可以使用)
1. 在選項中開啟"信任對VBA工程對象模型的訪問"
2. 在VBA工程中添加"Microsoft Visual Basic for Application Extensibility"引用(不同Excel版本可能不同,我的是5.3), 引用這個後,就可以動態修改VBA工程中的代碼了.3. 加入兩個模塊"EvalModule"和"EvalModuleStub", 模塊中的代碼分別如下:
EvalModule:Option Explicit
Public Sub Eval(code As String)
Dim comp As VBComponent
Set comp = ActiveWorkbook.VBProject.VBComponents("EvalModuleStub")
Call comp.CodeModule.DeleteLines(2, comp.CodeModule.CountOfLines - 2)
Call comp.CodeModule.InsertLines(2, code)
Call EvalStub
End Sub
Sub EvalStub()
lineholder
End Sub
4. 然後, 你就可以使用Eval來執行任意VBA代碼了:
使用vbproject.vbcomponents.add新建模塊,將字元串通過vbproject.vbcomponents.codemodule.insertlines寫到模塊內容里,不過前後要加上sub a()和end sub
然後call a
調用下過程函數就可以
推薦閱讀:
※有哪些學習vba的好書推薦?現在學習vba是否有些過時?現在比較好的操縱word和excel的方式有哪些?
※請各位VBA大神救命!?
※怎樣將xml批量導入excel?
※Excel VBA入門(九)操作工作薄
TAG:VBA |