2015-08-08 1 views
0
Option Explicit 

Sub Sample() 
    Dim objIe As InternetExplorerMedium 
    Dim xobj As Variant 
    Dim links As Variant 
    Dim link As String 
    Dim lnk As Variant 
    Dim rc As Integer 
    Set objIe = New InternetExplorerMedium 
    objIe.Visible = True 
    objIe.navigate "C:\Users\SOURABH\Desktop\test.html" 
    Do While objIe.Busy And Not objIe.readyState = 4 
     Application.StatusBar = "Loading.." 
     DoEvents 
    Loop 
    MsgBox objIe.document.body.innerHTML 
    Set xobj = objIe.document.getElementByTagName("myDiv") 
    Set xobj = xobj.getElementsByClassName("myTable").Item(0) 
    Set xobj = xobj.getElementsByClassName("data")(0) 
    For Each lnk In links 
     MsgBox "lnk got accessed" 
     If lnk.className = "myTable" Then 
      Sheets("Sheet1").Cells(3, 1).Value = lnk(0).innerText 
      Exit For 
     End If 
    Next 
    MsgBox xobj.innerText 
    Set xobj = Nothing 

    objIe.Quit 
    Set objIe = Nothing 
End Sub 

И мой HTML:макроса VBA InnerText доступа HTML страницы

<div id="myDiv">  
<table class="myTable"> 
     <tbody> 
      <tr> 
       <td>Text1:</td> 
       <td class="data"><strong>0.51</strong></td> 
      </tr> 
      <tr> 
       <td>Text2:</td> 
       <td class="data"><strong>2199</strong></td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

Я могу видеть InnerText с помощью команды MsgBox, но при получении имя класса в InnerText я получаю сообщение об ошибке:

object doesn't support this property in set xobj = objIe.document.getElementByTagName("myDiv") line

Пожалуйста, помогите мне найти способ, чтобы получить InnerText класса «данные»

+0

Я нахожусь Любопытно, почему вы используете vba для доступа к html dom? –

+0

На самом деле я пытался сделать автоматизацию, чтобы получать уведомление с новым почтовым оповещением без ручной подписи на почтовом сервере. Пожалуйста, предложите лучшие варианты доступа к исходному коду html. Ваши предложения всегда приветствуются. –

ответ

1

Вы пытаетесь получить доступ к этому тэгу, который я Случай с MyDiv - это DIV.

Я думаю, что вы хотите:

Set xobj = objIe.document.getElementById("myDiv") 

EDIT Дополнительный вопрос
Я попытался сделать это, но я на Mac :(Если бы я Угадайте, я бы сказал, вы должны попробовать что-то вроде:

For Each obj In xobj.getElementsByClassName("data") 
    MsgBox obj 
Next 

использовать также отладчик разорвать на MsgBox, вы можете увидеть, что находится в объекте

+0

Большое спасибо. Я сделал очень глупую ошибку ... –

+0

Не беспокойтесь, слава богу за StackOverflow :) –

+0

Эй, вы можете помочь мне получить строку «Text1:» и «Text2:». Заранее спасибо. –