Active Scripting Engine can help you. Instantiate ScriptControl
ActiveX, use .AddObject()
method to add reference to Excel's Application
object to the script control's execution environment, set the third parameter to True
to make all Application
's members accessible too. Then just use .Eval()
method to evaluate any property or method, which is the Application
's member. The example below shows evaluation of Worksheets()
property:
Sub TestQueryTable()
Dim objQueryTable As QueryTable
Dim strEvalContent As String
strEvalContent = "Worksheets(""RAW DATA"").Range(""A1"").QueryTable"
Set objQueryTable = EvalObject(strEvalContent)
objQueryTable.Refresh
MsgBox objQueryTable.Connection
End Sub
Function EvalObject(strEvalContent As String) As Object
With CreateObject("ScriptControl")
.Language = "VBScript"
.AddObject "app", Application, True
Set EvalObject = .Eval(strEvalContent)
End With
End Function
If you are on 64-bit Office, this answer may help you to get ScriptControl
to work.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…