Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2009, 09:00   #1
tva
 
Регистрация: 11.10.2009
Сообщений: 5
По умолчанию как прочитать HTML код

Помогите прочитать HTML код активной страницы Browsera макросом VBA.
Спасибо
tva вне форума Ответить с цитированием
Старый 11.10.2009, 13:11   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А зачем, если не секрет, это нужно?

Если известна ссылка на Web-страницу, проще макросом скачать из интернета этот файл, и никакой браузер не понадобится...

Также посмотрите пример работы с браузером, расположенном в документе Word: http://www.programmersforum.ru/showp...55&postcount=2
EducatedFool вне форума Ответить с цитированием
Старый 11.10.2009, 19:32   #3
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Файл, наверно, необязательно скачивать - есть же просто функция получения ответа сервера в виде HTML.
motorway вне форума Ответить с цитированием
Старый 12.10.2009, 09:43   #4
tva
 
Регистрация: 11.10.2009
Сообщений: 5
По умолчанию EducatedFool, motoway

Да не секрет, ситуация такая: продаю оферту, через браузер генерируется номер и код ваучера, я их копирую, затем вставляю в ячейку экселя и печатаю чек, а так как не все администраторы внимательные, то из буфера обмена в ячейку вставляется все, что угодно. HTML код страницы получается небольшой, я выведу им одну кнопочку - и не надо ничего копировать и вставлять.
Спасибо за отзывы, но у меня VBA ругается на все, что связано с браузером.
tva вне форума Ответить с цитированием
Старый 12.10.2009, 09:58   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Я в таких случаях поступаю так:

1) Открываю браузер, генерирую нужную информацию
2) Нажимаю Ctrl + A, потом Ctrl + C для копирования ВСЕГО содержимого страницы
3) Переключаюсь на Excel (Alt + Tab)
4) Нажимаю волшебную кнопочку на панели Excel, которая запускает макрос обработки содержимого буфера обмена.

Макрос проверяет, ВСЯ ЛИ страница была скопирована в буфер обмена, и, если никакая часть WEB-страницы не утеряна, вырезает из текста нужные данные, и вставляет их в нужные ячейки.

Можно, в принципе, программно считывать текст страницы из браузера (кстати, браузеров разных много...), - но это будет очень сложный макрос.
Какой браузер Вы используете?
EducatedFool вне форума Ответить с цитированием
Старый 12.10.2009, 10:06   #6
tva
 
Регистрация: 11.10.2009
Сообщений: 5
По умолчанию EducatedFool

Вот вот, именно сложный, ну попробуем побороться. А волшебную кнопочку я вывел на панель задач, и эксель сам себя загружает, делает вставки из буфера обмена, печатает чек, и сам себя закрывает. Еще раз спасибо...
tva вне форума Ответить с цитированием
Старый 12.10.2009, 10:07   #7
tva
 
Регистрация: 11.10.2009
Сообщений: 5
По умолчанию

Браузер - лисичка
tva вне форума Ответить с цитированием
Старый 12.10.2009, 11:12   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Тут придётся использовать API-функции типа этих:
Код:
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" _
                                       (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
                                    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
                              (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, _
                               ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                             (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetWindowText Lib "User" (ByVal hwnd%, ByVal lpString$, ByVal nMaxCount%) As Integer
Private Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Sub test()
    Dim h As Long
    h = FindWindow(vbNullString, "Яндекс - Mozilla Firefox")
    'Функция возвращает хендл окна Mozilla Firefox с указанным заголовком
    Call SetWindowText(h, "Test-Test")
    'Меняем заголовок заданного окна
End Sub
Ну или макросом временно активировать окно браузера, посылать команды Ctrl + A, Ctrl + C и Esc (используя команду SendKeys), и опять активировать окно Excel.

PS: SendKeys не всегда работает в Windows Vista - там надо использовать SendInput
EducatedFool вне форума Ответить с цитированием
Старый 12.10.2009, 11:15   #9
tva
 
Регистрация: 11.10.2009
Сообщений: 5
По умолчанию EducatedFool

Огромное огромное спасибо, сейчас буду пробовать.
tva вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Код(скрипт) чтения HTML страницы как текста PuzzleC JavaScript, Ajax 3 06.03.2010 15:35
Как из TStringStream загрузить Html код в WebBrowser? nikmay Общие вопросы Delphi 3 11.09.2009 16:29
Как сохранить html код из приложения? Robin_ Работа с сетью в Delphi 4 08.05.2008 17:04
Как получить со страничы HTML код? Kukkk Работа с сетью в Delphi 6 23.10.2007 23:13