【发布时间】:2021-01-25 02:20:20
【问题描述】:
我正在尝试在网页中实现自动化 (.aspx)。上传数据和备注后,我必须点击提交按钮。单击提交按钮时,window.confirm 弹出窗口显示和我的vba 停止,直到我单击“确定”或“取消”。如果我手动单击“确定”,另一个弹出窗口会显示“我的数据已更新”,并且该弹出窗口可以由我的Vba 控制。
网页代码submit button
<INPUT onclick=javascript:validate(this); tabIndex=3 id=btnsubmit class=formbutton language=javascript style="WIDTH: 35%" type=submit value=Submit name=btnsubmit>
Validate(这个)代码
function validate(v)
{
if (document.forms[0].txtremarks.value=="")
{
alert('Remarks is required!');
document.forms[0].txtremarks.select();
window.event.returnValue = false;
return false;
}
//alert(v.id);
if (v.id=="btnsubmit")
{
var c=window.confirm('Do you want to save records?');
if (c==true)
{
document.getElementById("sub_confirm").value=true;
}
else if(c==false)
{
document.getElementById("sub_confirm").value=false;
}
}
}
阅读一些问答后我的代码。在第 2 行 (ie IE.document.all("btnsubmit").Click) 之后,Windows.comfirm 框弹出和 VBA 停止。如果我单击“确定”,则另一个弹出窗口显示(该数据已更新)并且弹出窗口可由vba 代码控制。
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'Sends the specified message to a window or windows. The SendMessage function calls the window procedure
'for the specified window and does not return until the window procedure has processed the message.
Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWND As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'Retrieves a handle to the top-level window whose class name and window name match the specified strings.
'This function does not search child windows. This function does not perform a case-sensitive search.
Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'Retrieves a handle to a window whose class name and window name match the specified strings.
'The function searches child windows, beginning with the one following the specified child window.
'This function does not perform a case-sensitive search.
Public Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Public Const BM_CLICK = &HF5&
Sub Carrier_Inspection_Module()
' Some Code to update data from excel, after that..
IE.document.all("txtremarks").Value = "Ins at Gujarat"
IE.document.all("btnsubmit").Click
Application.Wait (Now + TimeValue("0:00:05"))
hWND = FindWindow(vbNullString, "Message from webpage")
If hWND <> 0 Then childHWND = FindWindowEx(hWND, ByVal 0&, "Button", "OK")
If childHWND <> 0 Then SendMessage childHWND, BM_CLICK, 0, 0
hWND = FindWindow(vbNullString, "Message from webpage")
If hWND <> 0 Then childHWND = FindWindowEx(hWND, ByVal 0&, "Button", "OK")
If childHWND <> 0 Then SendMessage childHWND, BM_CLICK, 0, 0
end Sub
【问题讨论】:
标签: excel vba internet-explorer automation