powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить средствами VBA текст html?
50 сообщений из 50, показаны все 2 страниц
Как вытащить средствами VBA текст html?
    #36946451
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VBA:
Можно ли средствами VBA вытащить текст любого произвольного сайта в формате html (т.е. достаточно в виде только текста)? Само собой разумеется, что для этого требуется как минимум свободный доступ к и-нету, а также существование (в рабочем состоянии) сайта.
Предполагается следующее:
Имеется поле, где указывается адрес сайта.
При нажатии юзером кнопки VBA вытаскивает в виде текста сам сайт и сохранит как отдельный файл там же где проект VBA находится. При этом не требуется вытаскивание рисунков, звуков, фильмов и т.д. (так как эти объекты имеют достаточно "большой вес").


В и-нете порылся, нашёл "MSXML". Но как им пользоваться в VBA не умею. Может кто-нибудь знает примерчик? Какую-нибудь ссылочку?
Заранее благодарю за любую помощь!
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946479
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946752
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Михаил.,

Спасибо за ссылку. Но насколько я понял, там речь идёт об экспорте данных. А мне нужно наоборот, импорт данных. Как это сделать? Что-то не получается у меня.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946815
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите здесь, может подойдет
Парсинг с авторизацией в https
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36946918
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_worldПосмотрите здесь, может подойдет
Парсинг с авторизацией в https

Ваш код кажется это то, что мне надо.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub httpText()
    Dim s As New WinHttp.WinHttpRequest
    Dim ReturnStr As String, FileNumber, url
    
    url = "http://sql.ru/forum/actualpost.aspx?bid=4"
    Debug.Print url
    s.Open "GET", url
    s.Send
    ReturnStr = s.ResponseText
    Debug.Print ReturnStr
End Sub

Попробовал. Вроде работает! Спасибо БОЛЬШОЕ!!!!

А можно ещё один вопросик? У меня этот код сработал слегка медленно, видимо "WinHttp" пользуется средствами Internet Explorer. А можно ли каким то макаром заставить смотреть в сторону Firefox Mozilla/5.0? Мне кажется Firefox намного шустрее. Или я не угадал проблему скорости?
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947037
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно, но возникла куда более серьёзная проблема. Оказывается "WinHttp" не со всех сайтов вытаскивает текст нормально. В некоторых случаях выходит подобная абракадабра:
Код: plaintext
1.
2.
3.
        <span style="font-weight: bold;">?????µ ??N? ??N??µ??????N???N??°?µN??µ N?N??°????N?N? N??±?µN??µ?¶?µ????N??</span><br />
        <div style="font-style: oblique;">??????N? ??N? ???????µN?N??µN??µ?</div>
        <!-- div>???°??N?N?N????µ: 2011-03-15</div -->

Как бороться с этим?
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947067
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Komil_
> Как бороться с этим?


Научиттся работать с юникодом :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947106
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
> Автор: Komil_
> Как бороться с этим?


Научиттся работать с юникодом :)



Не могли бы помочь, как можно "WinHttp" познакомить с юникодом? Пытаюсь переключить на юникод, а он не в какую. Подозреваю, что у него нет такого свойства. Если это так, то очень, очень жаль. А мог быть идеальным решением для моего случая.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947172
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinHttp не должен и не занимается разбором кодировок. Его задача получить то, что отдает сервер. Что с этим делать дальше — проблема автора. А автор даже не сообщает, что он собирается делать.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947308
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyWinHttp не должен и не занимается разбором кодировок. Его задача получить то, что отдает сервер. Что с этим делать дальше — проблема автора. А автор даже не сообщает, что он собирается делать.

Как не сообщил что делать? Сохранить как отдельный файл. Можно простой текстовый файл.
Т.е. Вы имеете ввиду если я сразу сохраню в файл, то там будет всё О.К.?
Щас попробую._
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947328
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сразу сохранить в файл. Нет, не получился. Всё равно выходит абракадабра.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947345
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_Странно, но возникла куда более серьёзная проблема. Оказывается "WinHttp" не со всех сайтов вытаскивает текст нормально. В некоторых случаях выходит подобная абракадабра:
Код: plaintext
1.
2.
3.
        <span style="font-weight: bold;">?????µ ??N? ??N??µ??????N???N??°?µN??µ N?N??°????N?N? N??±?µN??µ?¶?µ????N??</span><br />
        <div style="font-style: oblique;">??????N? ??N? ???????µN?N??µN??µ?</div>
        <!-- div>???°??N?N?N????µ: 2011-03-15</div -->

Как бороться с этим?

анализировать на

<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
--------------------------------------------------------------------utf-8
--------------------------------------------------------------------utf-16
............
и соответственно обрабатывать
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947425
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАKomil_Странно, но возникла куда более серьёзная проблема. Оказывается "WinHttp" не со всех сайтов вытаскивает текст нормально. В некоторых случаях выходит подобная абракадабра:
Код: plaintext
1.
2.
3.
        <span style="font-weight: bold;">?????µ ??N? ??N??µ??????N???N??°?µN??µ N?N??°????N?N? N??±?µN??µ?¶?µ????N??</span><br />
        <div style="font-style: oblique;">??????N? ??N? ???????µN?N??µN??µ?</div>
        <!-- div>???°??N?N?N????µ: 2011-03-15</div -->

Как бороться с этим?

анализировать на

<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
--------------------------------------------------------------------utf-8
--------------------------------------------------------------------utf-16
............
и соответственно обрабатывать

META тэга может и не быть
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36947508
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПЕНСИОНЕРКА
анализировать на

<META content="text/html; charset=windows-1251" http-equiv="Content-Type">
--------------------------------------------------------------------utf-8
--------------------------------------------------------------------utf-16
............
и соответственно обрабатывать

Анализировать как? Что это? Куда мне вставить подобный текст?
Я понимаю, что проблема в Unicode, но не понимаю как решить.



P.S.
сейчас мне необходимо отключиться из и-нета. я не смогу ответить до завтра. если не отвечу, то не сочтите за невежливость. заранее извиняюсь.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949168
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_,
опять эти библиотеки
чтобы не выделяло в строке
Dim s As New WinHttp.WinHttpRequest
Какую библиотеку надо подключить???
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949189
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эндрю, а ты вообще сообщения читаешь? по ссылкам ходишь? с гуглем хоть немного дружишь?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949203
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,
Dim s As New WinHttp.WinHttpRequest 'библиотека Microsoft WinHTTP Services, version 5.1
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949204
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович Эндрю,

'Tool.References... Add a reference to Microsoft WinHTTPServices
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36949383
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Жалко, что WinHTTP не дружит с UNICODE. Очень жаль.
А так если сайт англоязычный, то вполне подойдёт. Но беда в том, что мне как назло именно русский текст и нужен.
Ладно. Буду смотреть на сторону MSXML2. Надеюсь он менее капризный.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950359
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_, потом выложите скрипт пожалуйста
может Вам это нужно Текст_на_странице_WEB = IE.Document.body.innerText 'текст на WEB странице ????????
И если я не ршобаюсь этот скрипт не весь текст с страницы берёт в переменную, почему???
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950361
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ршобаюсь это ошибаюсь
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950641
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_Попробовал сразу сохранить в файл. Нет, не получился. Всё равно выходит абракадабра.Попробуйте сохранять не в текстовый, а в .DOC-файл. Ворд умеет справляться с юникодом.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950804
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем кто участвовал.
Я в и-нете поковырял и нашёл одну процедурку (в каком сайте забыл, что-то вроде excelplaneta что ли, не помню). Вообщем видоизменил и получился что надо! По крайнем мере именно то, что мне надо!

А код такой (если кому пригодится)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub GetInformationFromINet()
    Dim oHttp As Object
    Dim strURL As String
    
    strURL = "здесь необходимо указать адрес сайта, что то вроде http://mail.ru/"
    
    On Error Resume Next
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    If Err.Number <>  0  Then
        Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
    End If
    On Error GoTo  0 
    If oHttp Is Nothing Then
        MsgBox "Не удалось инициализировать объект MSXML!"
        Exit Sub
    End If
    
    oHttp.Open "GET", strURL, False
    oHttp.Send
    
    Debug.Print oHttp.ResponseText
    Set oHttp = Nothing
    MsgBox "Данные успешно импортированы!", vbInformation
End Sub

Автор процедуры специально использовал тип данных "Object" вместо подключения к библиотеке "MSXML2" (т.к. у конечного пользователя может и не быть такой библиотеки). Проверил, работает и без подключения библиотеки. Очень простой код, но рабочий. С unicode нет проблем!
То, что предложил Михаил, в принципе примерно почти тоже самое, правда нужно было там слегка убрать лишнее.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950861
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_ Автор процедуры специально использовал тип данных "Object" вместо подключения к библиотеке "MSXML2" (т.к. у конечного пользователя может и не быть такой библиотеки). Проверил, работает и без подключения библиотеки.
Если у пользователя нет зарегестрированных в реестре данных библоитек, то использование функции CreateObject даст результат:
Код: plaintext
1.
MsgBox "Не удалось инициализировать объект MSXML!"
С другой стороны: прямое подключение к проекту библиотеки не требует ее регистрации в реестре. В некоторых случаях, когда есть пользовательские ограничения, регистрация библиотеки невозможна.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950870
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_А код такой (если кому пригодится)
После выполнения метода
Код: plaintext
1.
oHttp.Send
я бы сделал проверку на текущее состояние загрузки данных readyState и результата ответа на запрос status - загляни обязательно сюда . Коды http-ответа здесь .
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36950916
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Михаил.,

Спасибо за просвещение! Ссылки действительно для меня были полезны, ибо я не знал свойства и методы XMLHttpRequest. А в справочниках МС офиса не нашёл.

А ещё 1 вопросик можно?
Доступ к и-нету не у всех пользователей имеется. Можно ли процедурой VBA "заставить" через сеть запустить программку, которая импортирует данные с и-нета? Т.е. я думаю так, когда юзер нажимает на кнопку VBA сначала проверяет есть ли свободный доступ к и-нету у данного компа. Если нет, то обращается к другому определенному компу (как к серверу) и через него получает данные.

Есть конечно вариант такой, для меня реализовать которого будет очень не просто. Существует SQL Server, к которому все юзеры подключены. Когда юзер нажимает на кнопку, то запускается SQL процедура, которая выполняет импорт данных с и-нета. Для меня очень сложно перевести вышеупомянутую VBA процедуру на язык SQL. Для этого маловато у меня знаний. Но если не смогу сделать это в VBA, то тогда буду смотреть в сторону SQL.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36951175
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_,

НТМ с инета это смесь гладкого теста и таблиц(с многократным вложением)


перечень..лллллллллллллллллллллллллл лллллллллллллллллллллл лллллллллллллллллллллллллллл ллллллллллллллллллллллллллллллл лллллллллллллллллллллллл ллллллллллллллллллллллллллл лллллллллллллллллллллл...........

наименколценасуммаболт1000,1212гайка10001,121120

перечень........лллллллллллллллллллллллллл лллллллллллллллллллллл лллллллллллллллллллллллллллл ллллллллллллллллллллллллллллллл лллллллллллллллллллллллл ллллллллллллллллллллллллллл лллллллллллллллллллллл.......

наименколценасуммаболт1000,1212гайка10001,121120
..................
дальнейшие действия
-откроем в ворд(борьба с кодировками)
-где ворд 2007 чаще всего откроется, в более старых откроется далеко не все и не всегда
-так как в документе сохранены ссылки на рисунки, будет сделана попытка открыть их -увы не всегда успешно
-будут искаться несуществующие таблицы стилей и прочая.....

наконец то открылся
-сохранение как текст
-какой текст unicod или кириллица 1251

выбрали кириллица
-потеряли многие символы

результат
при переводе в текст получили плохо читаемый длиннющий столбик -половина строк в 1-3 символа
перечень.....лллллллллллллллллллллллллл лллллллллллллллллллллл лллллллллллллллллллллллллллл ллллллллллллллллллллллллллллллл лллллллллллллллллллллллл ллллллллллллллллллллллллллл лллллллллллллллллллллл..........

наимен
кол
цена
сумма
болт
100
0,12
12
гайка
1000
1,12
1120

перечень......лллллллллллллллллллллллллл лллллллллллллллллллллл лллллллллллллллллллллллллллл ллллллллллллллллллллллллллллллл лллллллллллллллллллллллл ллллллллллллллллллллллллллл лллллллллллллллллллллл.........

наимен
кол
..............


в каком виде и кодировке вы хотите получить результаты
-таблички для вставки в ексель
-отчеты в НТМ
-иногда файл сайта формируют без использования перевода строки- только мягкий перенос. в этом случае имеем строку очень большой длины


вывод
не помешали бы образцы по форме инета и по формы результата

хотя бы в форме
инет
ааааааааааа аааааааааааа аааааааааааа а ппппппп пппппппоооооооооооооо оооооооооооооооо ооооооооооооооо оооооооооооооооооооооооо1111211.11.2010оооооооооооооо оооооооооооооооо ооооооооооооооо оооооооооооооооооооооооо1111211.11.2010оооооооооооооо оооооооооооооооо ооооооооооооооо оооооооооооооооооооооооо1111211.11.2010оооооооооооооо оооооооооооооооо ооооооооооооооо оооооооооооооооооооооооо1111211.11.2010
выход..................................
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36951258
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_.Михаил.,
Доступ к и-нету не у всех пользователей имеется. Можно ли процедурой VBA "заставить" через сеть запустить программку, которая импортирует данные с и-нета? Т.е. я думаю так, когда юзер нажимает на кнопку VBA сначала проверяет есть ли свободный доступ к и-нету у данного компа. Если нет, то обращается к другому определенному компу (как к серверу) и через него получает данные.
Что Вы имеете под "импортировать данные с и-нета", какие именно данные: собираетесь парсить html-текст, получать данные в формате XML и д.р.; прямой доступ к какой-нить базе SQL...???

Как я понимаю ваш "сервер" всегда имеет доступ к инету. На нем и запускайте прогу для импортирования данных и записывайте их в файлы, например, XML, MDB (база данных MS Access). Эти файлы выкладывайте в папку с общим доступом. На клиенте пользователь будет уже запускать совсем другую прогу для чтения данных файлов.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36951356
Komil_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Михаил.Как я понимаю ваш "сервер" всегда имеет доступ к инету.
Да!

.Михаил.На нем и запускайте прогу для импортирования данных и записывайте их в файлы, например, XML, MDB (база данных MS Access). Эти файлы выкладывайте в папку с общим доступом. На клиенте пользователь будет уже запускать совсем другую прогу для чтения данных файлов.

В принципе во всём Вы правы.
Я администратор базы данных, у меня есть доступ к и-нету. Я конечно могу сам вытаскивать, что надо. Ну а если меня нет на месте? А хотелось бы чтобы пользователь мог вытащить то, что ему надо не дожидаясь меня. И то, что Вы пишите файл следует сохранить в папке с общим доступом, конечно да! А оставить юзеру пароль свой на винду не выход, ибо у меня в компе много чего не для широкой публики.
Что касается формата, то обычный текстовый формат, скажем html. Не требуется в виде таблицы, и не надо всяких объектов типа звук, картинка, видео и прочее.
А найти ключевые слава и парсить - не проблема, для этого напишу специальные процедурки. Знаю, что прогу универа нельзя состряпать. А это уже моя проблема.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36951506
.Михаил.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Komil_
Ну а если меня нет на месте? А оставить юзеру пароль свой на винду не выход, ибо у меня в компе много чего не для широкой публики.

Что Вы имеете ввиду "нет на месте" ?
1. Вас физически нет на работе, например, в отпуске. Если Вы не хотите кому-либо отдавать свой пароль, тогда, предположу, что ваш комп (пока Вас не будет) будет выключен. Если так, то из вышеописанного можно исключить слово "сервер" (т.е. ваш комп). Получается, что если у пользователя не будет инета, то он не сможет получить через ваш комп требуемую информацию.
2. Вы наработе, но выбает, что отлучаетесь. В этом случае ваш комп включен. Тогда ничего не мешает запустить прогу, которая, например, каждые 10 минут (или 10 секунд) импортирует данные и размещает в папке с общим доступом. Пользователь по локальной сети находит ваш комп и открытую папку и "читает" из нее данные.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36951571
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС вы страдаете фигнёй, простите за выражение.

ваше решение - это кэширующий прокси-сервер и настройка нужным пользователям доступа к инету через него.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952195
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из этого топика имею два скрипта для решения вопроса
Как вытащить средствами VBA текст html
А почему они не равны переменные
Текст_сайта_в_формате_html <> Текст_сайта_в_формате_html1
????
Какой способ лучше
Первй способ определения текста вэб страницы html кода лучше тем, что библиотеку подключать не надо


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
'1 текст сайта в формате html
Dim oHttp As Object
Dim strURL As String
strURL = "http://mail.ru/" 'здесь необходимо указать адрес сайта, что-то вроде http://mail.ru/, то есть url
On Error Resume Next
Set oHttp = CreateObject("MSXML2.XMLHTTP")
If Err.Number <>  0  Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
On Error GoTo  0 
If oHttp Is Nothing Then MsgBox "Не удалось инициализировать объект MSXML!": Exit Sub
oHttp.Open "GET", strURL, False
oHttp.Send
Текст_сайта_в_формате_html = oHttp.responseText
Debug.Print oHttp.responseText
Set oHttp = Nothing

'2 текст сайта в формате html
'подключаем библиотеку Microsoft WinHTTP Services, version 5.1
Dim s As New WinHttp.WinHttpRequest
Dim ReturnStr As String, FileNumber, url
url = "http://mail.ru/" 'здесь необходимо указать адрес сайта, что-то вроде http://mail.ru/, то есть url
s.Open "GET", url
s.Send
Debug.Print ReturnStr
Текст_сайта_в_формате_html1 = s.responseText
If Текст_сайта_в_формате_html <> Текст_сайта_в_формате_html1 Then Beep
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952273
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст_сайта_в_формате_html <> Текст_сайта_в_формате_html1 Потому что XMLHTTP приводит текст к системной кодировке, а WinHttpRequest— нет.
Первй способ определения текста вэб страницы html кода лучше тем, что библиотеку подключать не надоВо втором тоже не надо, если написать не New WinHttp.WinHttpRequest, а CreateObject("WinHttp.WinHttpRequest").
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952299
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,'если написать не New WinHttp.WinHttpRequest, а CreateObject("WinHttp.WinHttpRequest")
'Dim s As New WinHttp.WinHttpRequest
'получим:
Dim s As CreateObject("WinHttp.WinHttpRequest")'синтаксическую ошибку ???? Что не так???
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952303
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюAntonariy,'если написать не New WinHttp.WinHttpRequest, а CreateObject("WinHttp.WinHttpRequest")
'Dim s As New WinHttp.WinHttpRequest
'получим:
Dim s As CreateObject("WinHttp.WinHttpRequest")'синтаксическую ошибку ???? Что не так???

Код: plaintext
1.
2.
Dim obj as Object

Set obj = CreateObject("WinHttp.WinHttpRequest")

так надо делать
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952321
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, а Вы думаете я так не пробовал делать??? Напрасно
Код: plaintext
1.
2.
Dim obj As Object
Set obj = CreateObject("WinHttp.WinHttpRequest") 'ошибка 429 АктивеХ конпоненткант среате объект
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952326
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюKonst_One, а Вы думаете я так не пробовал делать??? Напрасно
Код: plaintext
1.
2.
Dim obj As Object
Set obj = CreateObject("WinHttp.WinHttpRequest") 'ошибка 429 АктивеХ конпоненткант среате объект


ну так у вас проблема с этим компонентом, он у вас не зарегистрирован в системе
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952337
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, так а если он не зарегестрирован в системе как можно билиотеку подключить???
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952341
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюKonst_One, так а если он не зарегестрирован в системе как можно билиотеку подключить???

значит у вас для этой библиотеки в системе другой ProgID.

PS
и я даже могу догадаться какой


WinHttp.WinHttpRequest.5.1
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952353
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, ну догадки верны и как быть, настроили библиотек, тут ещё в системе другой ProgID
Кто так строит?????? Как трудно жить!!!!!!!!
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952361
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюKonst_One, ну догадки верны и как быть, настроили библиотек, тут ещё в системе другой ProgID
Кто так строит?????? Как трудно жить!!!!!!!!
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952371
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, кроме смайлика и текста ХАХАХА ещё что то можете сказать
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952373
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ципихович ЭндрюKonst_One, кроме смайлика и текста ХАХАХА ещё что то можете сказать

а что можно сказать на ваш риторический вопрос?
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952481
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneЦипихович ЭндрюKonst_One, кроме смайлика и текста ХАХАХА ещё что то можете сказать

а что можно сказать на ваш риторический вопрос?"Наймите программиста."
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952486
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, а вот Вы скажите по тому вопросу где надо со слипом решить, там решать максимум 20 миню тысячу плачу желающих нет
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952495
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наймите программиста на свое место.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952498
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, где его найти??
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952526
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В кадровом агентстве.
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #36952551
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, как Вы далеки от действительности, рограммист нужен на 20-30 минут
Доверить ему написать всё, никогда! мышление другое!
...
Рейтинг: 0 / 0
Как вытащить средствами VBA текст html?
    #37457452
KuskovS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Komil_Спасибо всем кто участвовал.
Я в и-нете поковырял и нашёл одну процедурку (в каком сайте забыл, что-то вроде excelplaneta что ли, не помню). Вообщем видоизменил и получился что надо! По крайнем мере именно то, что мне надо!

А код такой (если кому пригодится)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub GetInformationFromINet()
    Dim oHttp As Object
    Dim strURL As String
    
    strURL = "здесь необходимо указать адрес сайта, что то вроде http://mail.ru/"
    
    On Error Resume Next
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    If Err.Number <>  0  Then
        Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
    End If
    On Error GoTo  0 
    If oHttp Is Nothing Then
        MsgBox "Не удалось инициализировать объект MSXML!"
        Exit Sub
    End If
    
    oHttp.Open "GET", strURL, False
    oHttp.Send
    
    Debug.Print oHttp.ResponseText
    Set oHttp = Nothing
    MsgBox "Данные успешно импортированы!", vbInformation
End Sub


Здравствуйте! Столкнулся с проблемой в коде. В 2003 excel'е выше написанный код (дай бог автору здоровья) работал как часы. Поставили 2007 и почему-то здесь "oHttp.ResponseText" не весь текст исходной страницы страницы. Например адрес: " http://cbr.ru/currency_base/daily.aspx?C_month=09&C_year=2011&date_req=27.09.2011" - здесь текущие курсы валют ЦБ РФ.
Код: plaintext
1.
2.
3.
4.
5.
6.
Immediate (начала страницы):
<td align="left">  DKK</td>
<td align="right"> 10 </td>
<td>  Датских крон</td>
<td align="right"> 58 , 5659 </td></tr>
<tr><td align="right"> 840 </td>
На этом видно, что данные начинаются с Датской кроны, а это 9! валюта в списке (да и вообще видно, что первая строка это не начало страницы). Из-за этого я не могу получить курсы валюты выше 9-ой позиции. Что делать? Как получить полный код страницы? Тестировал на других сайтах, тоже самое - код неполный. Еще одна странная особенность: если oHttp.ResponseText посмотреть в msgbox, то исходный код страницы начинается сначала но не до конца! Т.е. данные Debug.Print и msgbox не совпадают! Заранее благодарен за любою помощь.
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить средствами VBA текст html?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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