【问题标题】:Copy table (with no id) from password protected website从受密码保护的网站复制表(没有 id)
【发布时间】:2016-06-21 11:06:25
【问题描述】:

我想从我的银行网站上检索一张表格,并将其以相同格式粘贴到 Excel 表格中。 感谢这个非常有用的网站上的一些帖子,我设法编写了一个自动的 vba 代码:

  • 打开 Internet Explorer 窗口
  • 填写登录和密码详细信息
  • 点击提交按钮,从而将我连接到我的银行帐户
  • 点击“前一日交易报告”按钮,生成报告
  • 最后在 Internet Explorer 中显示此报告

现在我的问题是: 如何复制此报告(这是一个表格)并将其粘贴到 Excel 表中,格式与网站上显示的完全相同? 在网站页面的html代码中,这个表没有“id”。但是它有一个类,叫做“report”。而且是唯一一个有这个类的。

我想我必须使用这个:

    IE.document.getElementsByClassName("report")(0).outerHTML

但我不知道如何使用它...基本上对我来说最简单的事情是编写代码的最后一部分,将报告复制到剪贴板,然后以相同的格式将其粘贴到电子表格上。

知道我该怎么做吗?

【问题讨论】:

    标签: vba excel passwords


    【解决方案1】:

    我录制了一个宏来获取代码,使用它应该会为您复制表格。我认为它对你来说是最好的方式。您必须更改 URL 和 webtable。这将复制它。

        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;http://THE URL AFTER LOGIN WITH THE TABLE", _
            Destination:=Range("$A$1"))
            .CommandType = 0
            .Name = "SEQUENCE OF URL"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingNone
            .WebTables = "11"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False
            .Refresh BackgroundQuery:=False
        End With
    

    让我们完成这项工作! :) 一步一步来。

    【讨论】:

      【解决方案2】:

      你是对的。使用它填写表格。

      尝试打开页面,按 F12 并使用控制台确保一切正常。

      填充 document.getElementById("Id").value = "xxxxx" document.getElementById("Id2").value = "pass"

      点击 document.getElementById("name").click()

      【讨论】:

      • 嗯...不确定我是否真的理解答案。我需要将表格复制到剪贴板,然后粘贴。我认为您的代码不会那样做...另外,该表不知道,因此 getElementbyId("report") 不起作用...
      • 嗨。您是否尝试过遍历每个 TR 和 TD 标记名,然后只更新 excel 中的值?
      【解决方案3】:
             Set objie = CreateObject("InternetExplorer.Application")
             objie.Visible = True
             With objie
                 .AddressBar = False
                 .StatusBar = False
                 .MenuBar = False
                 .Toolbar = 0
      
               .NAVIGATE "http://www.loginpage.com"
      
             While .BUSY
             Wend
             Do While .READYSTATE <> 4: DoEvents: Loop
      
             'first you login
             Set htmldoc = .document
             htmldoc.getElementById("UserId").Value = "login"
             htmldoc.getElementById("Password").Value = "pass"
             htmldoc.getElementById("submit-btn").Click
      
             End With
      

      尝试使用这个,它的第一步......对你有意义吗?我是新来的,所以我会尽力而为

      【讨论】:

      • 嘿迪奥戈!非常感谢您的帮助:-) 是的,您的代码有效,但我已经这样做了。我真的到了最后一步,我需要将一个类名为“Report”的表格复制到剪贴板,然后以与网站上显示的格式相同的格式将其粘贴到我的 Excel 工作表中......
      猜你喜欢
      • 2013-03-02
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      相关资源
      最近更新 更多