powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить средствами VBA текст html?
25 сообщений из 50, страница 2 из 2
Как вытащить средствами 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
25 сообщений из 50, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как вытащить средствами VBA текст html?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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