【问题标题】:Copy some text from the site to Excel (Run-time error 462)将一些文本从站点复制到 Excel(运行时错误 462)
【发布时间】:2016-08-16 06:41:25
【问题描述】:

程序有效(需要在 Excel 中显示的文本)。但之后 IE 停止工作并出现运行时错误 462(远程服务器机器不存在或不可用)。在互联网上搜索解决方案。 https://support.microsoft.com/en-us/kb/178510 。 我无法有效地更改代码。

   Sub extractTablesData1()
Dim IE As Object
Dim Data As Object
Dim xlApp As Excel.Application
Dim xlwb As Excel.Workbook
Dim xlsh As Excel.Worksheet
Dim i As Integer
Dim elemCollection As Variant

Set xlApp = CreateObject("Excel.Application")
Set xlwb = xlApp.Workbooks("IESite.xlsx")
Set xlsh = xlwb.Worksheets("Data")

Set IE = CreateObject("InternetExplorer.Application")
With IE
    .Visible = False
    .navigate ("http://allscores.ru/soccer/new_ftour.php?champ=2404&f_team=406&tour=110")
    While IE.ReadyState <> 4
        DoEvents
    Wend
    Set Data = IE.document.getElementsbyTagName("table")(6).querySelectorAll("td.clr, td.clr_win, td.clr_draw, td.clr_loose")
    i = 1
    For Each elemCollection In Data
        xlsh.Cells(34, 1 + i).Value = elemCollection.innerText
        i = i + 1
    Next elemCollection
End With
IE.Quit
Set IE = Nothing

结束子

【问题讨论】:

    标签: vba selectors-api


    【解决方案1】:

    如链接中所述:

    解决方案
    若要解决此问题,请修改代码,以便对 Excel 对象、方法或属性的每次调用都使用适当的对象变量进行限定。

    您正在使用:

    ActiveWorkbook.Sheets(1).Cells(34, 1 + i).Value
    

    这应该是:

    Dim xlwb as Workbook
    Dim xlsh as Worksheet
    
    set xlwb = Workbooks("IESite")
    set xlsh = xlwb.Worksheets("Data")
    
    xlsh.Cells(34, 1 + i).Value = elemCollection.innerText
    

    进一步的变化:

    根据解决方案的要求,一切都需要定义。让我知道以下方式是否有效,如果可以,我将删除上面的代码。

    别忘了定义 ElemCollection

    Sub extractTablesData1()
        Dim IE As Object
        Dim Data As Object
        Dim xlApp As Excel.Application
        Dim xlwb As Excel.Workbook
        Dim xlsh As Excel.Worksheet
        Dim i As Integer
        Dim elemCollection as ... 'please define elemCollection as the type it is
    
        Set xlApp = CreateObject("Excel.Application")
        Set xlwb = xlApp.Workbooks("IESite.xlsx")
        Set xlsh = xlwb.Worksheets("Data")
    
        Set IE = CreateObject("InternetExplorer.Application")
        With IE
            .Visible = False
            .navigate ("http://allscores.ru/soccer/new_ftour.php?champ=2404&f_team=406&tour=110")
            While IE.ReadyState <> 4
                DoEvents
            Wend
            Set Data = IE.document.getElementsbyTagName("table")(6).querySelectorAll("td.clr, td.clr_win, td.clr_draw, td.clr_loose")
            i = 1
            For Each elemCollection In Data
                xlsh.Cells(34, 1 + i).Value = elemCollection.innerText
                i = i + 1
            Next elemCollection
        End With
        IE.Quit
        Set IE = Nothing
    End Sub
    

    【讨论】:

    • 我更改了代码,然后我得到了运行时错误 9 (下标超出范围)
    • 你改了WorkbookWorksheet的命名了吗?
    • 我改了名字,然后我们回到原来的问题(IE停止工作和运行时错误462)
    • elemCollection As Variant ,但后来我得到了运行时错误 9
    • @maxim465 名称已更改?然后再次获取代码,刚刚看到我输入了xlbook,而不是xlwb
    猜你喜欢
    • 2023-01-29
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多