从IE对象返回整个页面文本

时间:2017-06-25 12:55:16

标签: html vba excel-vba internet-explorer excel

我正在使用VBA的正则表达式来接收网页上的电子邮件,所有这些都是非常不同的格式。由于格式上存在这些差异,我很难访问整个页面文本。

目前我的方法只是使用

Dim retStr as String
retStr = ie.document.body.innerText

其中ie来自Set ie = CreateObject("InternetExplorer.Application")

看起来很简单,但在this one等某些页面上并未返回所有页面文本。通过"所有页面文本" ,我的意思是 ctrl + f 会作用于任何事情。在链接页面中,每个步骤的文本都是'似乎没有回来。我想不同的网页之间会有变化,特别是如果它们没有用HTML格式化。

在网页上按 ctrl + a 会返回我喜欢的文字,是否有某种方法可以在不使用sendkeys的情况下访问此文字?

1 个答案:

答案 0 :(得分:2)

它对我来说很好。我有一种感觉,你正在将它写入Excel单元格,因此文本被截断。

我把它写到一个文本文件中,我得到了完整的文本。

Sub Sample()
    Dim ie As Object
    Dim retStr As String

    Set ie = CreateObject("internetexplorer.application")

    With ie
        .Navigate "http://www.wikihow.com/Choose-an-Email-Address"
        .Visible = True
    End With

    Do While ie.readystate <> 4: Wait 5: Loop

    DoEvents

    retStr = ie.document.body.innerText

    '~> Write the above to a text file
    Dim filesize As Integer
    Dim FlName As String

    '~~> Change this to the relevant path
    FlName = "C:\Users\Siddharth\Desktop\Sample.Txt"

    filesize = FreeFile()

    Open FlName For Output As #filesize

    Print #filesize, retStr
    Close #filesize
End Sub

Private Sub Wait(ByVal nSec As Long)
    nSec = nSec + Timer
    While nSec > Timer
        DoEvents
    Wend
End Sub