powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как считать данные с веб страницы
6 сообщений из 6, страница 1 из 1
Как считать данные с веб страницы
    #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
Как считать данные с веб страницы
    #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
Как считать данные с веб страницы
    #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
Как считать данные с веб страницы
    #37040536
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему

Код: plaintext
Dim myTable As IHTMLTable

А не

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

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


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