人。这是一个VBS脚本,可以打开Google,填写表单,然后点击搜索按钮。
set ie = CreateObject("InternetExplorer.Application")
ie.navigate("www.google.com")
ie.visible = true
while ie.readystate <> 4
wscript.sleep 100
WEnd
set fields = ie.document.getelementsbyname("q")
set buttons = ie.document.getelementsbyname("btnG")
fields(0).value = "some query"
buttons(0).click
ie.quit
Sub OnClickSub()
MsgBox "button clicked!", 0
End Sub
显然,buttons(0).click
会触发按钮的onclick事件,我在某种程度上需要在我的脚本中捕获它,并为其提供一些处理,例如启动OnClickSub()
。
有没有人知道应该怎么做?
答案 0 :(得分:3)
使用GetRef
函数获取指向事件处理程序的指针并将其绑定到onclick
事件,如下所示:
buttons(0).onclick = GetRef("OnClickSub")
(显然,从网页外部调用时,attachEvent
不起作用。)
答案 1 :(得分:0)
这是捕获Excel中发生的事件的非常简单的方法。 Excel必须打开才能正常工作。将其复制并粘贴到新的VBScript中,然后运行它。然后进入Excel,并更改单元格的值。将会弹出一个消息框,向您显示更改的单元格。
'/////////////////////////////////////////////////Event Constant Definitions/////////////////////////////////////////////////////
EVENT_CELL_CHANGE = 1 '//////////////////////////////////////////////////////////////////////
EVENT_SELECTED_CELL_CHANGE = 2 '/////////////////////////////////////////////////////
EVENT_SELECTED_SHEET_CHANGE = 3 '///////////////////////////////////////////////////
EVENT_SELECTED_WORKBOOK_CHANGE = 4 '///////////////////////////////////////
'/////////////////////////////////////////////////Event Constant Definitions/////////////////////////////////////////////////////
'_______________________________________________________________________
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////////////Global Program/////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
set O = getObject( , "Excel.Application")
Call WaitUntil_Event(EVENT_CELL_CHANGE, O.Selection, RtnVar, "BLANK")
msgbox RtnVar.address
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'////////////////////////////////////////////End of Global Program//////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'_______________________________________________________________________
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////Start of Main Sub Program/////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////This program was written by///////////////////////////////////////////////////////
'///////////////////////////////////////////Ben Ahrens (April 5th, 2019///////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Sub WaitUntil_Event(EventType, CheckVal, ByRef ReturnVariable, RunVBScript_FileName)
On Error Resume Next
LoopedCycleTime = 50
WaitUntil_SelectionChange = False
'msgbox EVENT_CELL_CHANGE
select case EventType
Case EVENT_CELL_CHANGE
Set CheckVal = O.Selection
Do
Set CheckVal = O.Selection
Val= CheckVal.Value
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Address <> CheckVal.Address
Loop While CheckVal.Value = Val
Set RtnVar = CheckVal
Case EVENT_SELECTED_CELL_CHANGE
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Address <> CheckVal.Address
Case EVENT_SELECTED_SHEET_CHANGE
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Worksheet.Name <> CheckVal.Worksheet.Name
Case EVENT_SELECTED_WORKBOOK_CHANGE
Do
WScript.Sleep LoopedCycleTime
Loop Until O.Selection.Worksheet.Parent.Name <> CheckVal.Worksheet.Parent.Name
End Select
'WaitUntil_Event = True
'Include RunVBScript_FileName
End Sub
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////End of Main Sub Program//////////////////////////////////////////////////////
'/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////