首页 > 编程语言 >VBA中使用JAVASCRIPT

VBA中使用JAVASCRIPT

时间:2022-09-19 16:03:07浏览次数:67  
标签:Function oWnd CreateObjectx86 End Dim JAVASCRIPT VBA 使用 oSC

Private Sub CommandButton1_Click()
Dim jsstr
Dim sb As String
Dim oSC As Object
Dim i As Integer
Set oSC = CreateObjectx86("MSScriptControl.ScriptControl") ' create ActiveX via x86 mshta host
Debug.Print TypeName(oSC) ' ScriptControl
With oSC
jsstr = TextBox1.Text
oSC.Language = "javascript"
oSC.AddCode ("var query = " & jsstr)
sb = oSC.Eval("query.学员.length")
For i = 0 To sb - 1 Step 1
sb = oSC.Eval("query.学员[ " & i & " ].姓名 ")
MsgBox sb
Next i

'操作oSC

End With
CreateObjectx86 , True ' close mshta host window at the end


End Sub


Function CreateObjectx86(Optional sProgID, Optional bClose = False)
Static oWnd As Object
Dim bRunning As Boolean
#If Win64 Then
bRunning = InStr(TypeName(oWnd), "HTMLWindow") > 0
If bClose Then
If bRunning Then oWnd.Close
Exit Function
End If
If Not bRunning Then
Set oWnd = CreateWindow()
oWnd.execScript "Function CreateObjectx86(sProgID): Set CreateObjectx86 = CreateObject(sProgID): End Function", "VBScript"
End If
Set CreateObjectx86 = oWnd.CreateObjectx86(sProgID)
#Else
Set CreateObjectx86 = CreateObject("MSScriptControl.ScriptControl")
#End If
End Function
Function CreateWindow()
Dim sSignature, oShellWnd, oProc
On Error Resume Next
sSignature = Left(CreateObject("Scriptlet.TypeLib").GUID, 38)
CreateObject("WScript.Shell").Run "%systemroot%\syswow64\mshta.exe about:""about:<head><script>moveTo(-32000,-32000);document.title='x86Host'</script><hta:application showintaskbar=no /><object id='shell' classid='clsid:8856F961-340A-11D0-A96B-00C04FD705A2'><param name=RegisterAsBrowser value=1></object><script>shell.putproperty('" & sSignature & "',document.parentWindow);</script></head>""", 0, False
Do
For Each oShellWnd In CreateObject("Shell.Application").Windows
Set CreateWindow = oShellWnd.GetProperty(sSignature)
If Err.Number = 0 Then Exit Function
Err.Clear
Next
Loop
End Function

  

标签:Function,oWnd,CreateObjectx86,End,Dim,JAVASCRIPT,VBA,使用,oSC
From: https://www.cnblogs.com/jjyy2008cn/p/16707933.html

相关文章