Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA网站自动化_Vba_Excel - Fatal编程技术网

VBA网站自动化

VBA网站自动化,vba,excel,Vba,Excel,大家下午好 我已经创建了一些代码,可以自动将我登录到我的works网站,但是当试图让VBA在其中一个搜索框中输入值时,我总是收到错误438:对象不支持此属性或方法 这是我的代码,请您帮忙: Option Explicit Const MyUserName As String = "username" Const MyPassword As String = "password" Const READYSTATE_COMPLETE As Integer = 4 Dim objIE As Ob

大家下午好

我已经创建了一些代码,可以自动将我登录到我的works网站,但是当试图让VBA在其中一个搜索框中输入值时,我总是收到错误438:对象不支持此属性或方法

这是我的代码,请您帮忙:

Option Explicit

Const MyUserName As String = "username"
Const MyPassword As String = "password"

Const READYSTATE_COMPLETE As Integer = 4

Dim objIE As Object


Sub LoginScript()

Dim Message, Title, Default
Dim MyValue As String
Dim currenttime As Date

Set objIE = CreateObject("InternetExplorer.Application")

    If MsgBox("Do you want to search for a member?", vbYesNo, "Login") = 
vbNo Then
With objIE
.Visible = True
.Silent = True
.Navigate ("https://XXXXXXXXX.com/")
Do Until .ReadyState = READYSTATE_COMPLETE
  DoEvents
Loop
.Document.all.txtuserid.Value = MyUserName
.Document.all.txtpassword.Value = MyPassword
.Document.all.save_button.Click
Do Until .ReadyState = READYSTATE_COMPLETE
  DoEvents
Loop
End With
    Else

    Message = "Please enter clients CTC number"    ' Set prompt.
    Title = "Member Search"    ' Set title.
    ' Display message, title, and default value.
     MyValue = InputBox(Message, Title)

With objIE
    .Visible = True
    .Silent = True
    .Navigate ("https://XXXXXXXXX.com/")
    Do Until .ReadyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    .Document.all.txtuserid.Value = MyUserName
    .Document.all.txtpassword.Value = MyPassword
    .Document.all.save_button.Click
    Do Until .ReadyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    currenttime = Now
    Do Until currenttime + TimeValue("00:00:10") <= Now
    Loop
    Do Until .ReadyState = READYSTATE_COMPLETE
    DoEvents
    Loop
    .Document.getElementsById("txtClientRef").Value = MyValue <------ Errors Here
End With
End If
End Sub
选项显式
Const MyUserName As String=“username”
Const MyPassword As String=“password”
常量READYSTATE_完成为整数=4
模糊对象
子登录脚本()
Dim消息、标题、默认值
将MyValue设置为字符串
将当前时间变为日期
Set objIE=CreateObject(“InternetExplorer.Application”)
如果MsgBox(“是否要搜索成员?”,vbYesNo,“登录”)=
那么vbNo呢
与奥布杰
.Visible=True
.Silent=True
.导航(“https://XXXXXXXXX.com/")
直到.ReadyState=ReadyState\u完成为止
多芬特
环
.Document.all.txtserid.Value=MyUserName
.Document.all.txtpassword.Value=MyPassword
.Document.all.save_按钮。单击
直到.ReadyState=ReadyState\u完成为止
多芬特
环
以
其他的
Message=“请输入客户CTC编号””设置提示。
Title=“成员搜索”设置标题。
'显示消息、标题和默认值。
MyValue=InputBox(消息、标题)
与奥布杰
.Visible=True
.Silent=True
.导航(“https://XXXXXXXXX.com/")
直到.ReadyState=ReadyState\u完成为止
多芬特
环
.Document.all.txtserid.Value=MyUserName
.Document.all.txtpassword.Value=MyPassword
.Document.all.save_按钮。单击
直到.ReadyState=ReadyState\u完成为止
多芬特
环
当前时间=现在

直到currenttime+TimeValue(“00:00:10”)Id应该是唯一的,并且语法是
getElementById
,因此请尝试:

 .Document.getElementById("txtClientRef").Value
首先执行
.Document.getElementById(“txtClientRef”).Focus也是一个好主意


如果出现运行时错误424,则可能是指定的对象不存在,或者在尝试分配时不可用。对于后者,您可以在指定的超时时间内尝试循环,直到没有任何内容。

Id应该是唯一的,语法是
getElementById
,因此请尝试:

 .Document.getElementById("txtClientRef").Value
首先执行
.Document.getElementById(“txtClientRef”).Focus也是一个好主意


如果出现运行时错误424,则可能是指定的对象不存在,或者在尝试分配时不可用。对于后者,您可以尝试循环,直到在指定的超时时间内没有任何内容。

为什么使用与登录凭据不同的方法来填充搜索字段?顺便说一句,这是一个非常糟糕的主意。我尝试了同样的方法,但这也不起作用。我是唯一有权访问包含代码的文件的人,并且我有aldo密码保护。该文件有助于设置您正在操作的控件的焦点。我仍然收到错误424为什么您使用与登录凭据不同的方法填写搜索字段?顺便说一句,这是一个非常糟糕的主意。我尝试了同样的方法,但这也不起作用。我是唯一有权访问包含代码的文件的人,并且我有aldo密码保护。该文件有助于将焦点设置在您正在操作的控件上。我仍然收到错误424,请告诉我。正在过帐:.Document.getElementsById(“txtClientRef”).value现在已导致错误更改。我现在得到错误424。对象RequiredWell,表明它在您尝试分配时不存在或不可用。是否有要共享的URL?你右键点击网页中的元素了吗?不幸的是,我不能分享这个URL,因为我的工作是为我们所有的客户使用的。我已经检查了页面,我试图填充的框位于一个名为“form_element varchar”的Span类下,然后该框的ID是“txtClientRef”,请告诉我。正在过帐:.Document.getElementsById(“txtClientRef”).value现在已导致错误更改。我现在得到错误424。对象RequiredWell,表明它在您尝试分配时不存在或不可用。是否有要共享的URL?你右键点击网页中的元素了吗?不幸的是,我不能分享这个URL,因为我的工作是为我们所有的客户使用的。我已经检查了页面,我试图填充的框位于一个名为“form_element varchar”的Span类下,然后该框的ID为“txtClientRef”