Excel 装运跟踪,返回日期提供运行时错误424所需对象

Excel 装运跟踪,返回日期提供运行时错误424所需对象,excel,vba,return,runtime-error,Excel,Vba,Return,Runtime Error,所以我正在为一位同事做一个项目,我遇到了一个问题。我以前从未使用过Excel VBA,在编码方面我几乎没有受过什么训练。StackOverflow和其他几十个网站都提供了巨大的帮助。我只是不知道该去哪里 进球 导航到网页 等待页面加载 将交货日期返回excel(单元格b1) 这是到目前为止我的代码 Public Function RoadRunnerTracking() Dim IE1 As Object Dim DeliveryCollection As Object Dim ProUrl

所以我正在为一位同事做一个项目,我遇到了一个问题。我以前从未使用过Excel VBA,在编码方面我几乎没有受过什么训练。StackOverflow和其他几十个网站都提供了巨大的帮助。我只是不知道该去哪里

进球

  • 导航到网页
  • 等待页面加载
  • 将交货日期返回excel(单元格b1)
这是到目前为止我的代码

Public Function RoadRunnerTracking()
Dim IE1 As Object
Dim DeliveryCollection As Object
Dim ProUrl As String


Set IE1 = CreateObject("InternetExplorer.application")

ProUrl = "https://www.rrts.com/Tools/Tracking/Pages/MultipleResults.aspx?PROS=" & Range("a1")

With IE1
    .Visible = True
    .Navigate ProUrl
    Do Until Not IE1.Busy And IE1.readyState = 4: DoEvents: Loop
End With

Set DeliveryCollection = Trim(IE1.document.getElementsByTagName("Span")(16).innerText) 'THIS LINE RETURNS A RUN TIME ERROR 424 OBJECT REQUIRED
Range("b1").Value = DeliveryCollection
Set IE1 = Nothing

End Function
我知道这不是一个完美的函数。我只是想解决一些问题

我不明白的是,我在另一个函数中测试了这一行,它工作得很好。我在测试功能中作弊,将链接直接粘贴到结果页面,而不是运行跟踪号码,但我认为这是一样的

这是这行代码的代码

Public Function PartTwoTest()
Dim IE1 As Object

Set IE1 = CreateObject("InternetExplorer.application")

With IE1
    .Visible = True
    .Navigate "https://www.rrts.com/Tools/Tracking/Pages/MultipleResults.aspx?PROS=359607744"
    Do Until IE1.readyState = 4
    DoEvents
    Loop
End With

DeliveryCollection = Trim(IE1.document.getElementsByTagName("Span") (16).innerText)
Range("b1").Value = DeliveryCollection

Set IE1 = Nothing

End Function

任何帮助都将不胜感激。

我认为deliverycollection需要是一个字符串。

直接转到“跟踪号码”页面并构建如下链接不是更容易吗:
https://www.rrts.com/Tools/Tracking/Pages/MultipleResults.aspx?PROS=123456789
其中
123456789
是假定的跟踪数字。这是一个伟大的观点。我没想到他这么简单。我肯定会修改代码来反映这一点。不幸的是(虽然我还没有尝试过),这不会影响正在发生的运行时错误,是吗?我想我的代码会简单得多,但我仍然有同样的问题。最后,我还想修改它,为pilot和fedex以及其他一些运营商服务。我不确定他们的URL是否会如此简单,但这至少适用于这个应用程序。每个网站都是不同的,因此你不能用一篇文章来解决所有问题。每个帖子都应该针对一个特定的问题。您可能想阅读本网站的详细信息,也可能想通过本次参观了解更多信息:之后,您可能想修改上述帖子以反映新的见解。
Set DeliveryCollection=Trim(IE1.document.getElementsByTagName(“Span”)(16.innerText)
——这看起来很奇怪。您需要
Trim()
的结果,这是一个字符串,设置为
DeliveryCollection
的对象。这无法工作,因为只有对象可以设置为对象。在代码的工作版本中,虽然未声明
DeliveryCollection
,但它会在未声明
Set
(表示:无对象)的情况下获得赋值。您是否尝试在代码中删除
?要使此功能正常工作,您还必须将
Dim DeliveryCollection As Object
更改为
Dim DeliveryCollection As String
Leviathan-谢谢。我真的很感谢你们两位的帮助。是的,非常感谢。这就解决了。现在遇到100多个问题,试图让这个工作需要,哈哈。希望我能解决自己的问题,但你和其他人帮了我很大的忙。