Sdscompany.ru

Компьютерный журнал
7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Internetexplorer application vba

Excel VBA управление IE локальная интрасеть

Итак, я использую код Excel VBA для нажатия кнопки на нашем веб-сайте, поверьте мне, я знаю, что это не самое лучшее из того, что можно сделать, но это наименее неприятный вариант, доступный мне в настоящее время.

Итак, этот выбор из пути, вот моя проблема, я могу, используя этот код, успешно загрузить imdb.com, google и т.д. Но когда я загружаю наш локальный сайт, я теряю контроль над объектом ie, я не могу проверить readyState, я не могу выйти. Вот эта ошибка, которую я получаю. Ошибка времени выполнения ‘-2147023179 (800706b5)’:

Ошибка автоматизации Интерфейс неизвестен

Время от времени я вместо этого получаю это сообщение: Ошибка времени выполнения ‘-2147417848 (80010108)’:

Ошибка автоматизации Вызванный объект отключился от своих клиентов.

Щелчок Debug указывает на ie.readyState, я также попытался прокомментировать это, а затем он указывает на ie.Quit

10 Ответов

Вот быстрое и простое решение этой проблемы:

Нет необходимости настраивать параметры IE

Вот что происходит. Когда ваш браузер перемещает «jumps» в другую зону безопасности-скажем, с локального адреса на адрес inTRAnet или на адрес inTERnet — IE закрывает / сбрасывает текущий процесс IE и открывает другой с более строгой защитой. Старые и новые процессы IE являются дочерними процессами IE для родительской задачи IE, поэтому вы не видите, как это происходит, наблюдая за браузером или наблюдая за процессом в Диспетчере задач. Если вы используете Process Explorer (бесплатно от Microsoft), вы можете увидеть, как это происходит.

То, что вам нужно сделать в этом типе окружающей среды, это использовать решение Ануп Упадхьяй выше. Его фрагмент кода просматривает все задачи IE (родитель и потомок не имеют значения) и находит новый процесс IE, который указывает на веб-адрес, указанный исходному процессу. Пока у вас нет нескольких браузеров, открытых на один и тот же адрес, он найдет новый процесс надежно и продолжит работу, как вы и ожидали.

Примечание: возможно, Вам также потребуется использовать объект InternetExplorerMedium в отличие от объекта InternetExplorer . Это также лучше при «holding on» к сессии.

Вот моя версия, которая почти совпадает с версией Анупа.

Список литературы для MS Office VBA:

Майкрософт Интернет Контролирует

Microsoft Shell средства управления и автоматизации

У нас была эта проблема с использованием IE9. Она возникает из-за настроек безопасности. На вкладке «Security» диалогового окна «Internet Options» (параметры tools. internet) имеется параметр «Enable Protected Mode». Каждый «zone» может иметь разные настройки для «enable protected mode» мы сняли флажок «enable protected mode», и это решило нашу проблему. Я думаю, что происходит то, что при переключении в зону, которая находится в защищенном режиме, IE запускает новый процесс для обработки трафика в этой зоне (возможно, убивая старый процесс). Когда это происходит, ваша объектная переменная IE в VBA отключается от Интернета Explorer.

Попробуй вот это:

Ладно, просто нашел решение, решил от отчаяния попробовать загрузить 127.0.0.1 вместо localhost, конечно же, никаких проблем, поэтому решил ip-адрес локального интрасетевого сервера, и теперь мне хорошо идти. Я действительно не понимаю, почему, но это решило мою проблему.

«Мы получаем ошибку Здесь , я нашел небольшое хитрое альтернативное решение для этого, как показано ниже «Возьмите справку для Microsoft Shell Controls And Automation ‘Используйте приведенный ниже код для переназначения объекта IE для проблемы потерянного соединения

Для меня сработало следующее:

  1. Открытый Интернет explorer
  2. Перейти к инструментам
  3. Перейти к Свойства обозревателя
  4. Переключиться на вкладку Безопасность
  5. Выберите надежные сайты
  6. Нажмите кнопку узлы
  7. Вы увидите сайт url, выберите его
  8. Нажмите Кнопку Удалить
  9. Нажмите кнопку Закрыть, применить и ОК

Пс. Я протестировал эти шаги на IE 8 браузере.

Может быть, у вас есть проблемы с привязкой? Это странная ошибка, чтобы получить за это.

Попробуйте этот код (адаптированный из http://www.excely.com/excel-vba/ie-automation.shtml). Надеюсь, это поможет:

Я испытываю точно такую же проблему, работая с веб-сайтом, который находится внутри интрасети нашей компании и также включен в мои надежные сайты. Отключение защищенного режима позволяет мне проверить ReadyState, но только если я отключу для зоны интернета в дополнение к интрасети и доверенным сайтам.

Почему включение защищенного режима для зоны интернета вызывает ошибку автоматизации при проверке ReadyState на доверенном сайте? Есть ли способ обойти это без отключения защищенного режима для зоны интернета?

Обратите внимание, что использование InternetExplorerMedium (см. другие ответы) обычно все, что вам нужно, FYI также вы можете использовать Url свойство obj.LocationURL вместо имени окна, которое было бы более точным. Смотрите другие ответы.

Похожие вопросы:

Я запускаю макрос Excel VBA, который открывает экземпляр IE, извлекает данные из экземпляра URL и затем должен снова закрыть экземпляр. Dim IE As Object Set IE =.

Я пытался скопировать и вставить или использовать .value для диапазона ячеек из excel в область веб-текста. Я могу обойтись только одной клеткой. Ссылка ( https://en.batchgeo.com/ ) позволяет.

Я хочу скопировать в Excel 3 таблицы отслеживания информации, которые веб- сайт генерирует, когда я отслеживаю посылку. Я хочу сделать это через Excel VBA. Я могу написать цикл и создать эту.

Вы хотите щелкнуть гиперссылку (тег) ‘abc’ в IE через Excel VBA. Пробовал getElementbyTag/getElementsbyName/getElementsbyClassName, но не повезло, поэтому, пожалуйста, помогите мне в этом
Заполните несколько IE WebForms параллельно с Excel

Я разрабатываю макрос Excel (VBA), который автоматически заполняет интернет Explorer WebForm некоторыми пользовательскими данными из листа Excel. В настоящее время над сценарием работает.

У меня есть ситуация очень похожая на следующий пост: Запрос доступа к excel 2010 для создания графика через vba В моем случае я экспортирую таблицу, но я хочу сделать гораздо больше для файла.

У меня есть какой-то старый код Excel VBA, где я хочу запускать задачу через регулярные промежутки времени. Если бы я использовал VB6, я бы использовал управление таймером. Я нашел метод.

Можно ли изменить код, найденный в этой теме: используя VBA в Excel для поиска Google в IE и возврата гиперссылки первого результата, чтобы получить первые 5 или 10 гиперссылок? Я новичок в VBA и не.

Как отключить безопасность>локальная интрасеть>включить защищенный режим из кода? Я столкнулся с проблемой с кнопкой facebook like, когда эта настройка включена.

Через Excel и VBA я открываю страницу. Я хочу нажать на кнопку ‘Expand’ через vba, но я получаю ошибку. Я попробовал использовать обе команды VBA, перечисленные ниже.

Working with Internet Explorer Using VBA

To make the following code work, you’ll need to include the «Microsoft Internet Controls» library in your VBA references first.
Go to your Visual Basic Editor, Menu Tools -> References. and select the entry «Microsoft Internet Controls». If you can’t find it in the list of available references, search for a file named shdocvw.dll , usually to be found in your Windows directory, subfolder System32 .

Alternatively, you can skip the referencing and use late binding, defining the pointer to the Internet Explorer instance as Object instead of SHDocVw.InternetExplorer in your VBA code. But then you’ll miss out on a lot of goodies like intellisense, full access to the object model via the object browser, access to the application’s built-in constants, and a popup listing all the supported constants upon typing.

Before you can do anything with the Internet Explorer, of course you’ll need one, and you’ll need something to address it. The following function achieves exactly this by creating a new instance of the Internet Explorer and returning a pointer to it.

The next function loads a webpage:

But what if the desired page has already been loaded and you just want to use it?
The following function returns a pointer to an already open instance of the Internet Explorer, if it has the desired page loaded. It’ll find it by comparing this page’s URL with the URLs of open pages in the Internet Explorer. If the page could not be found, the function returns Nothing .

Читать еще:  Просмотр pdf в браузере

Sometimes, when you enter an URL to load a page, you’ll get redirected, and thus the URL changes. Or your site uses frames and has the same URL for different content, so you can’t clearly identify a page by its URL. Then you could check the title of the page instead:

(This was tested with IE6. Since IE7 uses tabs for different webpages instead of different windows, this code probably won’t work for IE7.)

Now that you have your web page (either by loading it new, or by accessing an already opened page), you can extract information from it, or manipulate the document or do whatever you want/need to do.
To make work with html documents easier, the Document object itself is just the root of a hierarchy of objects (and arrays of objects) that represent the different html tags in the document with all their properties and content. So if you need to address a certain element, you wont have to parse the html source, but you can quite easily address the element directly by its name or index.

A good introduction about how to work with the DOM (Document Object Model) and how to use it with forms in particular is given on this German site: Tagmodell des Webbrowsers

Last but not least, a very good and comprehensive but also German site is the SELFHTML DOM reference

And because an example often is easier to understand than long-winded explanations: the following example goes to Wikipedia, enters a search string and navigates to the search result.

Excel VBA управление IE локальная интрасеть

Итак, я использую код Excel VBA для нажатия кнопки на нашем веб-сайте, поверьте мне, я знаю, что это не самое лучшее из того, что можно сделать, но это наименее неприятный вариант, доступный мне в настоящее время.

Итак, этот выбор из пути, вот моя проблема, я могу, используя этот код, успешно загрузить imdb.com, google и т.д. Но когда я загружаю наш локальный сайт, я теряю контроль над объектом ie, я не могу проверить readyState, я не могу выйти. Вот эта ошибка, которую я получаю. Ошибка времени выполнения ‘-2147023179 (800706b5)’:

Ошибка автоматизации Интерфейс неизвестен

Время от времени я вместо этого получаю это сообщение: Ошибка времени выполнения ‘-2147417848 (80010108)’:

Ошибка автоматизации Вызванный объект отключился от своих клиентов.

Щелчок Debug указывает на ie.readyState, я также попытался прокомментировать это, а затем он указывает на ie.Quit

10 Ответов

Вот быстрое и простое решение этой проблемы:

Нет необходимости настраивать параметры IE

Вот что происходит. Когда ваш браузер перемещает «jumps» в другую зону безопасности-скажем, с локального адреса на адрес inTRAnet или на адрес inTERnet — IE закрывает / сбрасывает текущий процесс IE и открывает другой с более строгой защитой. Старые и новые процессы IE являются дочерними процессами IE для родительской задачи IE, поэтому вы не видите, как это происходит, наблюдая за браузером или наблюдая за процессом в Диспетчере задач. Если вы используете Process Explorer (бесплатно от Microsoft), вы можете увидеть, как это происходит.

То, что вам нужно сделать в этом типе окружающей среды, это использовать решение Ануп Упадхьяй выше. Его фрагмент кода просматривает все задачи IE (родитель и потомок не имеют значения) и находит новый процесс IE, который указывает на веб-адрес, указанный исходному процессу. Пока у вас нет нескольких браузеров, открытых на один и тот же адрес, он найдет новый процесс надежно и продолжит работу, как вы и ожидали.

Примечание: возможно, Вам также потребуется использовать объект InternetExplorerMedium в отличие от объекта InternetExplorer . Это также лучше при «holding on» к сессии.

Вот моя версия, которая почти совпадает с версией Анупа.

Список литературы для MS Office VBA:

Майкрософт Интернет Контролирует

Microsoft Shell средства управления и автоматизации

У нас была эта проблема с использованием IE9. Она возникает из-за настроек безопасности. На вкладке «Security» диалогового окна «Internet Options» (параметры tools. internet) имеется параметр «Enable Protected Mode». Каждый «zone» может иметь разные настройки для «enable protected mode» мы сняли флажок «enable protected mode», и это решило нашу проблему. Я думаю, что происходит то, что при переключении в зону, которая находится в защищенном режиме, IE запускает новый процесс для обработки трафика в этой зоне (возможно, убивая старый процесс). Когда это происходит, ваша объектная переменная IE в VBA отключается от Интернета Explorer.

Попробуй вот это:

Ладно, просто нашел решение, решил от отчаяния попробовать загрузить 127.0.0.1 вместо localhost, конечно же, никаких проблем, поэтому решил ip-адрес локального интрасетевого сервера, и теперь мне хорошо идти. Я действительно не понимаю, почему, но это решило мою проблему.

«Мы получаем ошибку Здесь , я нашел небольшое хитрое альтернативное решение для этого, как показано ниже «Возьмите справку для Microsoft Shell Controls And Automation ‘Используйте приведенный ниже код для переназначения объекта IE для проблемы потерянного соединения

Для меня сработало следующее:

  1. Открытый Интернет explorer
  2. Перейти к инструментам
  3. Перейти к Свойства обозревателя
  4. Переключиться на вкладку Безопасность
  5. Выберите надежные сайты
  6. Нажмите кнопку узлы
  7. Вы увидите сайт url, выберите его
  8. Нажмите Кнопку Удалить
  9. Нажмите кнопку Закрыть, применить и ОК

Пс. Я протестировал эти шаги на IE 8 браузере.

Может быть, у вас есть проблемы с привязкой? Это странная ошибка, чтобы получить за это.

Попробуйте этот код (адаптированный из http://www.excely.com/excel-vba/ie-automation.shtml). Надеюсь, это поможет:

Я испытываю точно такую же проблему, работая с веб-сайтом, который находится внутри интрасети нашей компании и также включен в мои надежные сайты. Отключение защищенного режима позволяет мне проверить ReadyState, но только если я отключу для зоны интернета в дополнение к интрасети и доверенным сайтам.

Почему включение защищенного режима для зоны интернета вызывает ошибку автоматизации при проверке ReadyState на доверенном сайте? Есть ли способ обойти это без отключения защищенного режима для зоны интернета?

Обратите внимание, что использование InternetExplorerMedium (см. другие ответы) обычно все, что вам нужно, FYI также вы можете использовать Url свойство obj.LocationURL вместо имени окна, которое было бы более точным. Смотрите другие ответы.

Похожие вопросы:

Я запускаю макрос Excel VBA, который открывает экземпляр IE, извлекает данные из экземпляра URL и затем должен снова закрыть экземпляр. Dim IE As Object Set IE =.

Я пытался скопировать и вставить или использовать .value для диапазона ячеек из excel в область веб-текста. Я могу обойтись только одной клеткой. Ссылка ( https://en.batchgeo.com/ ) позволяет.

Я хочу скопировать в Excel 3 таблицы отслеживания информации, которые веб- сайт генерирует, когда я отслеживаю посылку. Я хочу сделать это через Excel VBA. Я могу написать цикл и создать эту.

Вы хотите щелкнуть гиперссылку (тег) ‘abc’ в IE через Excel VBA. Пробовал getElementbyTag/getElementsbyName/getElementsbyClassName, но не повезло, поэтому, пожалуйста, помогите мне в этом
Заполните несколько IE WebForms параллельно с Excel

Я разрабатываю макрос Excel (VBA), который автоматически заполняет интернет Explorer WebForm некоторыми пользовательскими данными из листа Excel. В настоящее время над сценарием работает.

У меня есть ситуация очень похожая на следующий пост: Запрос доступа к excel 2010 для создания графика через vba В моем случае я экспортирую таблицу, но я хочу сделать гораздо больше для файла.

У меня есть какой-то старый код Excel VBA, где я хочу запускать задачу через регулярные промежутки времени. Если бы я использовал VB6, я бы использовал управление таймером. Я нашел метод.

Можно ли изменить код, найденный в этой теме: используя VBA в Excel для поиска Google в IE и возврата гиперссылки первого результата, чтобы получить первые 5 или 10 гиперссылок? Я новичок в VBA и не.

Читать еще:  Что сделать чтоб ноутбук не тормозил

Как отключить безопасность>локальная интрасеть>включить защищенный режим из кода? Я столкнулся с проблемой с кнопкой facebook like, когда эта настройка включена.

Через Excel и VBA я открываю страницу. Я хочу нажать на кнопку ‘Expand’ через vba, но я получаю ошибку. Я попробовал использовать обе команды VBA, перечисленные ниже.

Windows Script Host — объект InternetExplorer и WebBrowser

1. Создание объекта

Internet Explorer включает два ActiveX-объекта: WebBrowser Object и InternetExplorer Object. Элемент управления WebBrowser может быть интегрирован непосредственно в форму VB или размещён на Web-странице, а объект InternetExplorer доступен только через механизм OLE Automation. Функциональность WebBrowser меньше по сравнению с функциональностью InternetExplorer. Упрощенно говоря, WebBrowser — это собственно окно просмотра документа в браузере, а InternetExplorer — это весь браузер, включая меню, панели инструментов, строку состояния и прочее. Оба объекта находятся в библиотеке «Microsoft Internet Controls» (shdocvw.dll в каталоге system32). Также может пригодиться библиотека «Microsoft HTML Object Library» (mshtml.dll там же) — это именно та среда, с которой оперируют скрипты на языках JavaScript и VBScript на Web-страницах. Примечание: приведённое ниже описание свойств, методов и событий не является до конца исчерпывающим (исчерпывающее описание можно найти в MSDN) и предназначено, в первую очередь, для работы с обозревателем как с OLE-Automation сервером из различных скриптовых сред или Visual Basic.

Пример создания OLE-объекта InternetExplorer:

Set objIE = CreateObject(«InternetExplorer.Application»)

Пример размещения ActivX-объекта WebBrowser на Web-странице:

2. Свойства

Применение некоторых свойств.

3. Методы

Применение некоторых методов.

3.1. Метод ExecWB

Выполняет команду и возвращает статус выполнения. Доступен в InternetExplorer и WebBrowser.Параметры:

  1. CmdID — идентификатор команды.
  2. CmdExecOpt — опции команды.
  3. PvaIn — необязательный, Variant, входные аргументы команды.
  4. PvaOut — необязательный, Variant, выходные аргументы команды.

Некоторые возможные значения параметра «CmdID» (подробнее — см. в MSDN описание «OLECMDID enumeration»):

Возможные значения параметра «CmdExecOpt»:

Пример:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.ExecWB 6, 1 ‘выдача диалога печати ‘objIE.ExecWB 6, 2 ‘немедленная печать

3.2. Метод QueryStatusWB

Возвращает статус указанной команды. Доступен в InternetExplorer.

Параметры: CmdID — идентификатор команды.

Возможные значения флагов в возвращаемом значении (возвращаемое значение — сумма флагов):

Пример:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 If objIE.QueryStatusWB(6) = 2+1 Then objIE.ExecWB 6, 1 ‘выдача диалога печати End If

3.3. Метод ShowBrowserBar

Показывает или скрывает указанную панель обозревателя. Доступен в InternetExplorer.

Параметры:

  • vClsID — строка, идентификатор класса панели.
  • bShow — необязательный, булево. False — скрыть панель, True — показать.

Некоторые возможные значения параметра «vClsID»:

Пример:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.ShowBrowserBar «<30D02401-6A81-11D0-8274-00C04FD5AE38>«, True

3.4. Метод Navigate

Осуществляет навигацию к указанному ресурсу (инициирует операцию открытия документа). Доступен в InternetExplorer и WebBrowser.

Параметры:

  1. Url — строка, определяющая URL или полный путь к файлу.
  2. Flags — необязательный. Набор флагов, определяющий, нужно ли добавлять ресурс в историю, записывать/читать ресурс в/из кэша, отображать ресурс в новом окне.
  3. TargetFrameName — необязательный. Строка, имя фрейма HTML, в котором следует отобразить ресурс. Если такого фрейма не существует, откроется новое окно.
  4. PostData — необязательный. Позволяет передать на Web-сервер данные, полученные в результате заполнения формы, если этот сервер требует HTTP — транзакции POST. Если этот параметр не определён, метод осуществляет HTTP GET транзакцию. Если указанный Url — не HTTPURL, параметр игнорируется.
  5. Headers — необязательный. Значение, определяющее дополнительные HTTP заголовки для отправки на сервер. Эти заголовки добавляются к заголовкам Microsoft Internet Explorer по умолчанию. Заголовки могут определять тип данных, код состояния и т.п. Если указанный Url — не HTTPURL, параметр игнорируется.

Возможные значения флагов параметра «Flags»:

Возможные значения параметра «TargetFrameName» (кроме собственно имени конкретного фрейма):

Пример:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1

3.5. Метод Refresh2

Аналогичен методу Refresh, но имеет единственный необязательный параметр, который задаёт «уровень» обновления. Заголовок «pragma:nocashe» запрещает серверу возвращать кэшированную копию документа, обеспечивая самую свежую информацию, однако этот заголовок может послужить причиной проблем на некоторых серверах. Возможные значения параметра:

4. События

5. Примеры кода

Свойства AddressBar и MenuBar:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.AddressBar = False objIE.MenuBar = False objIE.Visible = 1

Свойства ToolBar, StatusBar и Resizable:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.ToolBar = False objIE.StatusBar = False objIE.Resizable = False objIE.Visible = 1

Свойство FullScreen:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.FullScreen = True objIE.Visible = 1

Свойство TheaterMode:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.TheaterMode = True objIE.Visible = 1

Свойство StatusText:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 objIE.Document.Write objIE.StatusText objIE.StatusText = «ТЕКСТ СТРОКИ СОСТОЯНИЯ»

Свойства Height, Width, Top и Left:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Height = 200 objIE.Width = 300 objIE.Top = 0 objIE.Left = 0 objIE.Visible = 1

Свойства Name, FullName, Path, type, LocationName и LocationURL:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write «Name = «»» & objIE.Name & «»»
» objIE.Document.Write «FullName = «»» & objIE.FullName & «»»
» objIE.Document.Write «Path = «»» & objIE.Path & «»»
» objIE.Document.Write «Type = «»» & objIE.Type & «»»
» objIE.Document.Write «LocationName = «»» & objIE.LocationName & «»»
» objIE.Document.Write «LocationURL = «»» & objIE.LocationURL & «»»
» objIE.Visible = 1

Свойство Busy и метод Stop:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «qwerty» If objIE.Busy Then objIE.Stop End If objIE.Visible = 1

Свойство HWND:

On Error Resume Next Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Visible = 1 Set objShellApp = CreateObject(«Shell.Application») Set objFolder = objShellApp.BrowseForFolder(objIE.HWND, «Выбор папки», 0, «C:») objIE.Document.Write objFolder.Self.Path If Err.Number <> 0 Then objIE.Document.Write «Папка не выбрана!» End If

Свойство Document:

Set objIE = CreateObject(«InternetExplorer.Application») objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend objIE.Document.Write «Hello, Internet Explorer!» objIE.Visible = 1

Свойство ReadyState:

Set objIE = CreateObject(«InternetExplorer.Application») MsgBox «ReadyState = » & objIE.ReadyState objIE.Navigate «about:blank» While objIE.Busy Wscript.Sleep 200 Wend MsgBox «ReadyState = » & objIE.ReadyState objIE.Visible = 1

Управление заголовком окна, отключение контекстного меню:

Скачивание (загрузка) текста web-страницы в текстовый файл

При помощи этого макроса вы можете скачать текст с выбранной страницы веб-сайта:

То же самое — но в виде функции:

Если же нужен HTML код страницы, то используйте такой вариант

Пример использования этой функции для загрузки текста страниц из интернета:

PS: Если вас интересует ИСХОДНЫЙ КОД страницы — используйте эту функцию: http://excelvba.ru/code/GetHTTPResponse

  • 57100 просмотров

Комментарии

Да, можно и часть.
На сайте есть функция для поиска нужных тегов в html коде

Классные коды, огромное спасибо. А можно импортировать не всю страницу, а кусок? По тегам или еще как-нибудь

Переустанавливал, откатывал на старую версию, поставил винду 10 64 бит, и офис 16.

Возможно, IE криво установился или обновился. Попробуйте переустановить ИЕ

Function WebPageText не работает, ранее работала перестала после очередного пакета обновления виндоус7. Останавливается на строке
While IE.busy Or (IE.readyState <> 4): DoEvents: Wend
при этом страница в браузере открывается. если поставить
MsgBox IE.Document.body.innerText
При любом времени ожидания объект IE.Document пуст.
Если использовать http://excelvba.ru/code/GetHTTPResponse или https://excelvba.ru/code/FileQueryRange данные возвращаются. В чем проблема?

Меня интересует такой же вопрос: как загрузить содержимое текстового файла с этой страницы или сам файл

Огромное спасибо! То, что надо! Очень полезная в хозяйстве вещь!

Николай, да, можно, — только это будет уже совсем другой макрос.
Впрочем, у меня есть готовое решение для такой задачи, — всё будет работать в точности как вам надо:
http://excelvba.ru/programmes/Parser
И ссылки из выделенных строк возьмет из заданного столбца, и результат в те же строки выведет

Здравствуйте, отличный макрос (программа)! Подскажите пожалуйста, а можно сделать так, чтобы задавать диапазон ссылок (например: от А1 до А10) или выделять N-ое количество ссылок — макросы — выполнить и макрос их обрабатывает? И ещё, выводить содержимое ссылки не в новом документе, а в ячейке соседнего столбца? Понимаю, раскатал губу, своими запросами, не сочтите за наглость! Заранее благодарю за ответ.

Читать еще:  Как открыть doc файл в браузере

Добрый день! возможно уже есть пример описания получения части данных со web-страницы, заключенных между определенными тегами, например . и помещение их в ячейку

Добрый день.
Вы писали:
«Как перебрать все вкладки (и получить URL открытых страниц и их содержимое), я знаю (делал)»
Не мог бы бы подсказать как?
Спасибо!

Андрей, тут подсказать не смогу
Как перебрать все вкладки (и получить URL открытых страниц и их содержимое), я знаю (делал)
А как узнать, какая из вкладок активная, тут сложнее (надо к самому приложению обращаться, или через WinAPI все вкладки проверять) — мне такого делать не приходилось, потому, посоветовать ничего не могу.

Здравствуйте.
Подскажите, пожалуйста, следующее
Есть несколько уже открытых web-страниц в ИЕ. Они в разных вкладках и в разных окнах.
Нужно обработать только активную в данный момент вкладку или окно.
Как средствами VBA определить какая(ое) из всех вкладок-окон в данный момент активны?
Спасибо

Альтернатива есть, — можно работать с сайтами без использования браузера
Например: http://excelvba.ru/code/gethttpresponse
Браузер, собственно, вообще не нужен, — просто изредка с ним удобнее работать (код проще)

PS: IE8, как и любой другой браузер, отлично работает с HTTPS
Проблема IE — только в том, что он тормозит, и может подвисать
(потому я, в своё парсере, IE стараюсь не использовать вообще)

Доброго Времени Суток Вам.
Подскажите, а есть альтернатива:CreateObject(«InternetExplorer.Application»)
Дело в том, что у меня XP sp2 = IE8, который в свою очередь не работает c https.

Сергей, ответил вам на почту

Здравствуйте. Очень нужна Ваша помощь. Есть база ссылок в Excel. База для интернет-магазина. Есть столбцы с названием, описанием . ценой и ссылкой на сайт-донор. Нужно сделать так, чтоб макрос выполнял перебор этих ссылок и сравнивал цену в ячейке с ценой на сайте.
Можете мне в этом помочь?

Про какую программу речь?
В статье, где вы разместили комментарий, никакой программы нет.

Речь про надстройку «Парсер сайтов»? Если да, — можем настроить под заказ.
Заказы на парсер принимаются в таком виде: http://excelvba.ru/programmes/Parser/order

Скачал тестовую программу. Подскажите как сделать выгрузку списка компаний с сайта в таблицу ексель, и их контактов. Найти контакты возможно с других сайтов этих компаний, (поиск по названию компаний). Т.е. на сайте, где список компаний — там нет контактов, контакты есть на сайтах этих компаний, нужен поиск сайтов по названию компаний — переход и скачка контактов. Возможно это сделать через Данную программу? И как? Сайт, с которого нужен список компаний http://www.franchisee.su/catalog/s-p-avto-lyubye-zapchasti-na-lyubye-avt.

Валентина, в функции SaveTXTfile найдите строку

Файл создавался пустой, т.к. было попытка сохранить его в кодировке ANSI, а на веб-странице присутствуют символы, недопустимые в этой кодировке.
После того, как строчку в коде поменяете, файл будет создаваться в кодировке UTF-16, — там все символы допустимы.

Добрый день!
Я пробую сохранить текст, а также код страницы https://www.discogs.com, но текстовый файл — пуст.
При этом текст в переменной txt есть.

Добрый день! хороший макрос. Но как загружать код не только страницы но и код элемента находящегося на странице?

Спасибо большое! получилось реализовать именно этим способом.

Ну или добавьте в код из этой статьи задержку в пару секунд.
(надо подождать, пока отработает редирект, и скрипт сформирует страницу результатов)
После строки
While IE.busy Or (IE.readyState <> 4): DoEvents: Wend ‘ ждем, пока загрузится страница
напишите
application.wait now + 2/86400 ‘ пауза 2 секунды

Спасибо Вам за сайт. Очень много полезной и качественной информации.

Столкнулся с проблемой урл: «http://nylottery.ny.gov/wps/portal/NumbersTracker?game=NUMBER»
Ни одним способом, найденным на сайте, не могу загрузить данные с сайта в excel (Copy-Past не в счет). Веб-запрос тоже результатов не дает.
Подскажите, возможно есть другие способы, или я что-то упускаю. Заранее спасибо.

Подозрение что не в той отправляется. Потому что от гугла приходит INVALID_REQUEST

Ну как не работает? Может, не в той кодировке ответ приходит?
Так в этом случае можно изменить кодировку файла

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

Здравствуйте, Дмитрий.
Во-первых, код работает и с вашей ссылкой (Excel 2010, Win XP, IE 7), но дело даже не в этом.
По ссылке возвращается XML — зачем результат в ячейки помещать?

Есть 2 способа получить XML с сайта:

И у меня этот код ничего не возвращает запросом по адресу «http://maps.google.com/maps/api/geocode/xml?address=London&sensor=false»
Excel 2010, Win 7, IE 9

А запрос html из первоначального примера возвращает корректные данные. Возможно это потому что с гугла xml приходит?

А если в запросе London на Иркутск поменять?

Здравствуйте, Жека.
Использование браузера по-умолчанию в подобных макросах невозможно.

Браузеров много разных — соответственно, методы работы (программного взаимодействия) с ними сильно отличаются.
Придётся писать код для каждого отдельного браузера. (и получится не 5 строк кода, а в сотню раз больше)

Есть другой способ получить текст веб-страницы — использовать веб-запрос
(в этом случае можно обойтись вообще без макросов — этот запрос можно создать вручную, а настроить автообновление данных)

Ещё раз спасибо за Ваши программы. Возник вопрос :
Как переделать строку
Set IE = CreateObject(«InternetExplorer.Application») ,
что бы загружался браузер по умолчанию, а не только InternetExplorer.
Спасибо за ответ.

Здравствуйте, Алексей.
Тут не получится дать универсальный совет — в каждом случае надо выдирать из текста различные данные.
Обычно я делаю это при помощи функции Split (для разделения текстовой строки на 2 части).
2 вызова этой функции — и нужные данные из огромного текста получены.

Кроме того, можно попробовать применить веб-запрос — в этом случае курс доллара можно получить без единой строки кода.

PS: У меня на сайте есть отдельный макрос для получения курса доллара на нужную дату.

Спасибо, все работает
Я вот полностью забираю текст с сайта, а потом функциями excel выбираю нужное
А вот как в макросе прописать так называемый парсинг, т.е. мне надо найти например курс доллара на конкретную дату

Спасибо Вам за ответ!
Видимо у меня что-то с настройками? Посмотрю.
Я делал аналогично — загнал в переменную адрес. Результатом было ».

Огромное спасибо за совет, поискать по форуму «Планеты» — с лёту в поисковиках не нашел. Надо было быстро получить координаты. Сначала хотел воспользоваться json, но не смог добраться даже да текста. Надеюсь, на форуме найду.

Еще раз благодарю за очень оперативный ответ!

Я взял вышеопубликованную функцию ЗагрузкаТекстаВебСтраницы,
в одной строке кода заменил адрес сайта:

PS: Я бы на вашем месте поискал готовое решение — на форуме «Планеты Excel» встречал как-то 2 решения вашей задачи
(определение координат по адресу, путем парсинга XML с подобный веб-страниц)

Спасибо за Ваш отличный сайт!

Я попытался воспользоваться кодом с этого примера.
Планировал прочитать текст со странички по адресу «http://maps.google.com/maps/api/geocode/xml?address=London&sensor=false»

Но в переменную от объект WebPageText = IE.Document.body.innerText ничего не записывается. Подскажите, в чем может быть проблема?
Если открывать линк в IE, то результат отображается.

Спасибо.. Link.innerText — это то что нужно..А я в справке это свойство не нашёл.. Ещё раз спасибо..

Судя по результату, link.nameProp возвращает не надпись на ссылке, а что-то другое:
(я плохо ориентируюсь в объектной модели DOM)

Насколько мне известно, для получение текста ссылки надо использовать свойство Link.innerText

Спасибо..Всё получается.
А надпись на этой ссылке можно получить свойством link.nameProp ??
Спасибо за ответ..

В общем случае, после загрузки веб-страницы, надо обратиться к свойству Links веб-страницы:

Результат увидите в окне Immediate:

Хорошая програмка. Спасибо. А как можно загрузить с вэб-страницы гиперссылки?? Спасибо за ответ..

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector