Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как считать данные с веб страницы / 6 сообщений из 6, страница 1 из 1
28.12.2010, 17:04
    #37039452
microdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные с веб страницы
Добрый день,

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


<tr height="10%">
<td class="dm-section-header" width="20%">
<table>
<tr>
<td>
<div align="left">
<Table width="100%">
<tr>
<td class="dm-attribute">
<div align="left">Bank Account Number</div>
</td>
<td class="dm-value">
<div align="left">30000000000000000005</div>
</td>
</tr>
</Table>
</div>
</td>
<td width="80%">
</td>
<td width="10%">
<div align="right">
<Table width="100%">
<tr>
<td class="dm-attribute">
<div align="right">Statement Date</div>
</td>
<td class="dm-value">
<div align="left">27-Dec-10</div>
</td>
</tr>
</Table>
</div>
</td>
</tr>
<tr>
<td width="20%">
<div align="left">
<Table width="100%">
<tr>
<td class="dm-attribute">
<div align="left">Bank ID</div>
</td>
<td class="dm-value">
<div align="left">MICRB</div>
</td>
</tr>
</Table>
</div>
</td>
<td colspan=2 width="80%">
</td>
</tr>
</table>
</td>
</tr>

Я не пойму как достучаться до содержимого таблицы, используя доступные в ВБА типа переменных.
Есть такой код:

Dim mySt As HTMLDocument
Dim myTable As IHTMLTable
Dim myTags As IHTMLElementCollection
Dim myTag As IHTMLElement
Dim myBodys As IHTMLElementCollection
Dim element As IHTMLElement

Set mySt = IE.document
Set myTags = mySt.all.tags("table")
или
Set myTable = mySt.all.tags("table")

For Each myTable In mySt.all.tags("table")

Set myBodys = myTable.tags("td")

For Each element In myBodys


Next

Next

Но он не хочет работать.
Кто-нибудь может подсказать по иерархии, пожалуйста? Или подсказать какое-нибудь чтиво для взаимодействия ВБА и HTML?
Близких себе аналогичных примеров не нашел.

Спасибо
...
Рейтинг: 0 / 0
28.12.2010, 17:34
    #37039531
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные с веб страницы
microdin, Ваш код


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim mySt As HTMLDocument
Dim myTable As IHTMLTable
Dim myTags As IHTMLElementCollection
Dim myTag As IHTMLElement
Dim myBodys As IHTMLElementCollection
Dim element As IHTMLElement

Set mySt = IE.document
Set myTags = mySt.all.tags("table")
'или
Set myTable = mySt.all.tags("table")

For Each myTable In mySt.all.tags("table")

Set myBodys = myTable.tags("td")

For Each element In myBodys


Next

Next
Всё ничего, только не видно откeда он всё должен брать информацию с сайта? с файла?
...
Рейтинг: 0 / 0
29.12.2010, 11:42
    #37040432
microdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные с веб страницы
Спасибо. Конечно же этому куску предшествует такой

If ThisWorkbook.Sheets(1).Cells(1, 1) <> "" Then

tempStr = ThisWorkbook.Sheets(1).Cells(1, 1)
Set IE = CreateObject("InternetExplorer.Application")

IE.Navigate2 tempStr
Else
Exit Sub
End If
...
Рейтинг: 0 / 0
29.12.2010, 12:18
    #37040536
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные с веб страницы
Почему

Код: plaintext
Dim myTable As IHTMLTable

А не

Код: plaintext
Dim myTable As HTMLTable
?
...
Рейтинг: 0 / 0
29.12.2010, 12:28
    #37040556
microdin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные с веб страницы
Исключительно потому, что я не силен в этой части и пытался написать это все на основе схожих примеров.
А где можно почитать про разницу?
...
Рейтинг: 0 / 0
29.12.2010, 14:57
    #37040974
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как считать данные с веб страницы
А где можно почитать про разницу?
IHTMLTable — интерфейс, содержащий свойства и методы характерные только для таблицы, HTMLTable — класс, реализующий интерфейс IHTMLTable, IHTMLElement и еще несколько интерфейсов. Переменная, объявленная как IHTMLTable сможет работать только со свойствами этого интерфейса, то есть например свойство style, принадлежащее IHTMLElement, будет недоступно. Однако работа с интерфейсной переменной будет происходить быстрее. Переменные интерфейсного типа не могут быть объявлены WithEvents — у интерфейсов нет событий.

Если работа с DOM предстоит масштабная, то лучше по возможности объявлять интерфейсы. Такой комплексный подход хорошо отразится на быстродействии программы и предоставит дополнительный контроль ошибок, например еще на этапе компиляции пресечет обреченную на провал попытку посчитать строки у div.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как считать данные с веб страницы / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]