Vba 如何使用Application.SendKeys中断InternetExplorer对象

Vba 如何使用Application.SendKeys中断InternetExplorer对象,vba,internet-explorer,sendkeys,Vba,Internet Explorer,Sendkeys,我认为我正在通往成功的路上。我试图做的是在IE中加载一个URL,输入一些数据,然后运行一个报告 为此,我创建了一个InternetExplorer对象,使用该对象打开可见性,并导航到我的URL 进入页面后,我必须提供一些数据,让报表生成器执行它需要执行的操作,然后按enter键。一旦我到了这一点,我需要做一些导航到不同的网址,直到我到达报告页面。为了实现这一点,我尝试返回使用InternetExplore对象(IE)进行导航,但每当我使用IE.anything时,462错误就会弹出 我的问题有两

我认为我正在通往成功的路上。我试图做的是在IE中加载一个URL,输入一些数据,然后运行一个报告

为此,我创建了一个InternetExplorer对象,使用该对象打开可见性,并导航到我的URL

进入页面后,我必须提供一些数据,让报表生成器执行它需要执行的操作,然后按enter键。一旦我到了这一点,我需要做一些导航到不同的网址,直到我到达报告页面。为了实现这一点,我尝试返回使用InternetExplore对象(IE)进行导航,但每当我使用IE.anything时,462错误就会弹出

我的问题有两个:

  • 这个对象从一开始就很好,我不得不假设它是Application.Send或Application.Wait的使用,它以某种方式破坏了我的对象,为什么
  • 我做错了什么
  • 如何解决这一问题的建议

    Dim text As String
    Dim IE
    Set IE = CreateObject("InternetExplorer.Application")
    '
    IE.Visible = True
    IE.Navigate "http://~~~~~~~~~.net/reports/views/result/reportResult.faces"
    '
    text = "somedata"
    .
    Application.Wait (Now + TimeValue("00:00:02"))
        Application.SendKeys (text), True
    '
    Application.Wait (Now + TimeValue("00:00:02"))
        Application.SendKeys vbCrLf, True
    '   
    Application.Wait (Now + TimeValue("00:00:02"))
        IE.Navigate "http://~~~~~~~~~.net/reports/views/myMrs/myFavorites.faces"
    

  • 最终产品与我的目标完全不同。感谢那些提供意见的人,特别是Sorceri让我开始关注这些元素

    下面是完成的代码段(在这之后我有更多的事情要做,但这让我知道我需要去哪里)

    Private子OpenReport()
    将文本变暗为字符串
    作为整数的Dim x
    暗淡的
    设置IE=新的InternetExplorerMedium
    text=“somecode”
    '加载链接
    可见=真实
    IE.导航“http://~~~~~~~~~~~/reports/views/result/reportResult.faces”
    '等待页面加载
    在忙或准备状态4时执行
    多芬特
    环
    '填写pcode
    IE.Document.getelementbyid(“代码”).Value=text
    '单击提交
    IE.Document.getElementsByClassName(“btn btn lg btn主btn块”)(0)。单击
    '等待页面加载
    在忙或准备状态4时执行
    多芬特
    环
    '单击收藏夹
    IE.Document.getElementsByClassName(“MyMRSFavoritsLink”)(0)。单击
    '等待页面加载
    在忙或准备状态4时执行
    多芬特
    环
    '点击报告
    IE.Document.getElementsByName(“myFavoritesForm:treeTable\u tableId:1:infoButton101644806j\u id\u v\u 19”)(0)。单击
    '等待页面加载
    在忙或准备状态4时执行
    多芬特
    环
    点击执行报告
    IE.Document.getElementsByName(“setParametersForm:startReportButton”)(0)。单击
    端接头
    
    URL是否可以通过internet或intranet访问?试试看,你的程序结构是错误的。查看所有这些帖子,最好是获取页面的元素,并使用这些元素来调用click事件等,而不是SendKeys。SendKeys可能会出很多问题。@Sorceri-谢谢你的建议。我以前从未这样做过(用宏与网站交互),因此要找到所有语法正确对我来说是一个挑战。我将在清理完后在这里发布最终解决方案,但它工作得非常好。Mark和Omepes感谢您的输入。该url位于公司网络内部。感谢您发布此问题的解决方案。您可以在48小时后将您的答案标记为可接受的答案,此时可进行标记。它可以在将来帮助其他社区成员解决类似的问题。谢谢你的理解。
    Private Sub OpenReport()
    Dim text As String
    Dim x As Integer
    Dim IE
    Set IE = New InternetExplorerMedium
    text = "somecode"
    
    'Load link
    IE.Visible = True
    IE.Navigate "http://~~~~~~~~~/reports/views/result/reportResult.faces"
    
    'Wait for page to load
    Do While IE.Busy Or IE.ReadyState <> 4
        DoEvents
    Loop
    
    'fill in the pcode
    IE.Document.getelementbyid("code").Value = text
    
    'Click Submit
    IE.Document.getElementsByClassName("btn btn-lg btn-primary btn-block")(0).Click
    
    'Wait for page to load
    Do While IE.Busy Or IE.ReadyState <> 4
        DoEvents
    Loop
    
    'Click on Favorites
    IE.Document.getElementsByClassName("myMRSFavoritesLink")(0).Click
    
    'Wait for page to load
    Do While IE.Busy Or IE.ReadyState <> 4
        DoEvents
    Loop
    
    'Click on report
    IE.Document.getElementsByName("myFavoritesForm:treeTable_tableId:1:infoButton101644806j_id__v_19")(0).Click
    
    'Wait for page to load
    Do While IE.Busy Or IE.ReadyState <> 4
        DoEvents
    Loop
    
    Click on execute report
    IE.Document.getElementsByName("setParametersForm:startReportButton")(0).Click
    
    End Sub