在尝试使我们正在执行的流程自动化时,我遇到了一些障碍。 基本上,我试图让VBA启动Internet Explorer,登录到一个页面(打开的页面是基于Web的SAP),然后用T代码填充快速搜索栏并执行它。
现在,我对VBA的了解绝对不是我认为自己最强的游戏,但是我确实设法通过了登录页面并打开了下一个我应该填充到快速搜索栏的屏幕。问题是我似乎无法锁定需要填充的文本框。原因是(我想),因为它是JavaScript(而登录屏幕是纯HTML)。在下面,我粘贴了当前正在使用的代码以及正在处理的页面的一部分。 我该如何解决?
Sub Rectangle1_Click()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "www.pageimtryingtoresolve.com"
'loads webpage
Do
DoEvents
Loop Until IE.READYSTATE = 4
'waits for login webpage to load fully
IE.document.getelementbyid("userid").Value = "username"
IE.document.getelementbyid("password").Value = "hunter2"
IE.document.getelementbyid("submit").Click
'above enters GPID, Password and Clicks on the login button
Do
DoEvents
Loop Until IE.READYSTATE = 4
'again waits for webpage to load fully but this time it's sap
opening
IE.document.getelementbyid("qstext").Value = "ZSE16 - ECC"
End Sub
以下是页面来源中与我相关的部分。请记住,文本框的ID为“ qstext”。
function quickSearch(event){var qc=document.getElementById("qstext");
if(qc.value.length==0&&document.getElementById("completeDiv"))
{hideCompleteDiv();}
tltd=createtd(options);tltr.appendChild(tltd);tltbody.appendChild(tltr);
tltr=document.createElement("tr");var
qslabel=createLabel(QUICKSEARCH,'Arial,Helvetica,sansserif');
tltd=createtd(qslabel);tltr.appendChild(tltd);var
qstext=document.createElement('input');qstext.type='text';
qstext.id='qstext';qstext.style.width='403';qstext.onkeyup=function()
{var e=arguments[0]||event;quickSearch(e);};tltd=createtd(qstext);
tltd.colSpan='2';tltr.appendChild(tltd);tltd.appendChild
(document.createElement("td"));tltr.appendChild(tltd);
if(refreshflag.indexOf('true') !== -1)