Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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
Html 使用VBA将数据从Web复制到excel_Html_Excel_Vba_Web Scraping - Fatal编程技术网

Html 使用VBA将数据从Web复制到excel

Html 使用VBA将数据从Web复制到excel,html,excel,vba,web-scraping,Html,Excel,Vba,Web Scraping,我有一个网页,需要我的代码从页面复制整个数据,并将其复制到excel工作表中,这是目前没有发生的。我的excel表格将完全空白。我认为^a功能无法在IE上选择数据,然后进行复制 非常感谢您的帮助。下面是我正在使用的代码 Sub Webdata() Dim assetname As String, country As String, area As String, region As String, pth As String, folname As Variant, assetnam

我有一个网页,需要我的代码从页面复制整个数据,并将其复制到excel工作表中,这是目前没有发生的。我的excel表格将完全空白。我认为
^a
功能无法在IE上选择数据,然后进行复制

非常感谢您的帮助。下面是我正在使用的代码

Sub Webdata()

    Dim assetname As String, country As String, area As String, region As String, pth As String, folname As Variant, assetname1 As String

    Website = "http://website.com/"
    Set myIE = CreateObject("InternetExplorer.Application")
    myIE.Navigate source
    myIE.Visible = True
    Application.Wait Now + TimeSerial(0, 0, 10)
    SendKeys "^a"
    Application.Wait Now + TimeSerial(0, 0, 2)
    SendKeys "^c"
    Application.Wait Now + TimeSerial(0, 0, 2)
    Sheets.Add
    ActiveSheet.Name = "Webdata"
    ActiveSheet.Paste
    Application.Wait Now + TimeSerial(0, 0, 2)

    Range("A1").Select
    Cells.Find(What:="Api Number", After:=ActiveCell, LookIn:= _
               xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
               xlNext, MatchCase:=False, SearchFormat:=False).Activate

    ActiveCell.Offset(1, 0).Select
    Selection.Copy
    Sheets("Sheet1").Activate
    Range("C2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                           :=False, Transpose:=False
    Application.CutCopyMode = False
    myIE.Quit

    Set myIE = Nothing
    Err.Clear
    Sheets("Webdata").Select
    ActiveSheet.Delete

End Sub

那张表乱七八糟,因此,与其花时间完善如何以我通常的方式将表写入工作表,即在行中循环表行和表单元格,我将坚持您复制表的想法,但使用剪贴板,使用
.SetText
,而不是
SendKeys
。 兴趣表位于嵌套框架内,因此您必须首先协商这些框架

Set hTable = .frames(2).document.getElementsByTagName("table")(0)
代码:

选项显式
公共子GetInfo()
Dim IE作为新的InternetExplorer,html作为HTMLDocument,HTTable作为HTMLTable,剪贴板作为对象
Application.ScreenUpdating=False
与IE
.Visible=True
.导航“http://pipeline.wyo.gov/Wellapi.cfm?oops=IDxxxxx&nAPINO=xxxxxx“'工具>参考:

  • Microsoft Forms 2.0对象库
  • HTML对象库
  • Internet Explorer控件

  • 是的,有办法。到目前为止,你做了哪些研究和尝试?在你的问题中展示你已经做了什么,告诉我们你的困难到底是什么,你在哪里遇到了困难或错误。堆栈溢出上有几个问题正好回答了这种问题。非常感谢您的回答。我有下面的问题,但不知怎么的,这对我不起作用。请将属于你的问题的所有内容添加到上面的原始问题中。不要用评论来提问。还要解释什么东西不起作用。因为“不工作”并不能告诉我们关于你的问题。正如我说的:你的问题,并添加到那里。将其格式化为代码块(4个空格缩进,或使用ctrl+K缩进)。然后用代码删除注释。@Nishant您确定URL中的ID-s可以安全地发布到世界上吗?非常感谢QHarr帮助我,但是我得到了编译错误-未定义用户定义类型。请原谅我在VBA方面的知识非常有限。现在我得到了设置剪贴板的编译错误=新的MSForms.DataObjectError是编译错误“用户定义类型未定义”和新的MSForms.DataObject高亮显示是,这是现在工作…非常感谢你QHarr…它真的非常有用…再次感谢你的努力。哦,是的…非常感谢一次又一次…它现在工作得非常好。你真聪明。
    Option Explicit
    Public Sub GetInfo()
        Dim IE As New InternetExplorer, html As HTMLDocument, hTable As HTMLTable, clipboard As Object
        Application.ScreenUpdating = False
        With IE
            .Visible = True
            .navigate "http://pipeline.wyo.gov/Wellapi.cfm?oops=IDxxxxx&nAPINO=xxxxxx" '<==Input your personal URL here 
            While .Busy Or .readyState < 4: DoEvents: Wend
            Set html = .document
            With html
                Set hTable = .frames(2).document.getElementsByTagName("table")(0)
                Set clipboard = New MSForms.DataObject
                clipboard.SetText hTable.outerHTML
                clipboard.PutInClipboard
                ActiveSheet.Cells(1, 1).PasteSpecial
            End With
            .Quit
        End With
        Application.ScreenUpdating = True
    End Sub