Sdscompany.ru

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

Createobject internetexplorer application

HTA VBScript-IE CreateObject(InternetExplorer.Application) IE.Document.form1 не поддерживает свойство или метод

Я делал это несколько раз, однако я не уверен, почему на этот раз мой HTA vbscript кричит на меня о том, что объект не поддерживает это свойство или метод IE.Document.form1?

Игнорируйте ожидание IE.2000 подводных лодок.

У меня есть эта функция и в моем HTA vbscript, и она отлично работает.

Обнаружил, что form1 находится в iframe, возможно, поэтому я не могу ссылаться на него. Есть какие-нибудь идеи?

2 Ответа

Ладно, значит, я все понял. iframe-й был причиной всех неприятностей. Для тех, у кого есть такое же сообщение об ошибке, попробуйте проверить, что форма и элементы не являются частью iframe в пределах сайта, который вы пытаетесь очистить. Работа с backwords на сайте возьмите источник iframe и поместите его в свой vbscript, а не тот, который у вас есть.

Трудно игнорировать ваше ожидание, потому что, вероятно, здесь кроется причина. Вы, кажется, используете фиксированное количество времени, в то время как uou должен использовать что-то вроде

кроме того, в случае возникновения проблем, лучше отделить ваши уровни объекта по одному на строку, проще отлаживать

и комментируйте до тех пор, пока это не сработает

Эти общие рекомендации oare, если вы опубликуете real URL и ваш wait sub, мы могли бы дать более простой совет.

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

При использовании HTA userform для VBscript я обнаружил, что HTA не поддерживает WScript и его objects/methods. Существует ли какой-либо альтернативный способ создания формы пользователя или есть.

Я получаю объект не поддерживает свойство или метод ‘closest’ ошибка в IE. Я использую MooTools. Кто-нибудь может мне помочь.. var li = $$(‘.list’)[0].clone(true, true); var NewContainer =.

я создаю приложение, которое открывает веб-браузер (кроме IE ) и переходит к определенному URL с помощью VBScript, а также определяет экземпляр браузера, если он уже открыт. Браузер может быть.

Я получаю ошибку автоматизации при вызове следующего объекта Set IE = CreateObject(InternetExplorer.Application) Ошибка показывает Ошибка времени выполнения ‘-2147467259 (80004005)’ Ошибка.

Мне было интересно, как вызвать диалоговое окно поиска из открытого окна HTA с помощью кнопки отправки? Если я вручную ввожу Ctrl F, это запускает окно, поэтому я надеюсь, что это достижимо с.

У меня есть сценарий VBS в HTA, который должен проверять учетные данные для входа из формы входа HTA, пытаясь войти на внешнюю веб-страницу с теми же учетными данными. getElementsByClassName.

Я пытаюсь использовать это свойство в VBScript: DateCreated, как описано здесь: http://msdn.microsoft.com/en-us/library/ke6a7czx%28в=vs.84%29.aspx Но я получаю следующую ошибку: Ошибка среды.

У меня возникла проблема с разрешением объекта oList с моим CreateObject(System.Collections.ArrayList) Ошибка, которую я получаю в vbscript Ошибка выполнения Microsoft VBScript: объект не.

У меня есть vbscript, используя объект InternetExplorer для перехода на несколько страниц и передачи данных на эти страницы. Недавно после исправления IE8 я заметил, что что-то вызывает создание.

Я сталкиваюсь с одной проблемой. Объект не поддерживает это свойство или метод Ошибка времени выполнения в excel vba. Примечание : код прекрасно работает в моем ноутбуке. Эта ошибка произошла, когда.

Генерация и обработка событий

До появления системы Windows разработка многих программ следовала в строгом соответствии с процедурным подходом

До появления системы Windows разработка многих программ следовала в строгом соответствии с процедурным подходом. То есть мы запускали программу и ждали, когда она закончит выполняться. По завершении ее работы на экране снова появлялось приглашение командной строки, и можно было запускать другую программу. С появлением Windows в дизайне программ стала преобладать другая парадигма: событийно-управляемое программирование. Всякий раз, когда мы интерактивно взаимодействуем с приложением, происходит некоторое событие. Например, если мы щелкаем мышью по командной кнопке, имеющейся в какой-либо форме или на Web -странице, то, говоря языком программирования, мы тем самым генерируем для данной кнопки событие Click . Для его обработки программист должен написать соответствующую процедуру. Если такая процедура отсутствует, то система Windows просто проигнорирует это событие.

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

Источник события подает сигнал о том, что оно произошло. Широковещательное распространение этого сигнала называется генерацией события. События могут генерироваться любым объектом, который в этом случае называют источником события ( event firer или event sender ). Реакция на событие формируется в приемнике ( event receiver ), а сам этот процесс называется «перехватом» ( trapping ) или «приемом» ( sinking ) события. Приемниками событий (их также часто называют обработчиками ( handler или sink )) обычно являются некоторые процедуры. Итак, источник порождает событие, а приемник перехватывает его и выполняет соответствующие действия.

В общем случае, те события, с которыми мы можем работать в сценариях, можно разделить на четыре типа:
· события, порождаемые элементами управления ActiveX
· события, порождаемые ошибками
· события, порождаемые специальным программным кодом, реализованным с помощью Windows Script Components ( WSC )
· события, порождаемые специальным программным кодом, реализованным с помощью Windows Management Instrumentation (WMI)

Ниже будут рассмотрены первые три типа событий, порождаемые ActiveX , ошибками и WSC . События WMI будут обсуждаться в другой статье .

События ActiveX

Если вы разрабатываете сценарии, то наверняка знаете, как использовать элементы управления Active X . Обычно эти элементы имеются у объектов, у которых есть свои методы, свойства и события. Если элементы управления поддерживают автоматизацию, то мы можем взаимодействовать со всеми или частью этих методов, свойств и событий через сценарии. В частности, автоматизацию поддерживает объект InternetExplorer . Application – корневой объект приложения Microsoft Internet Explorer ( IE ), поэтому мы можем использовать его в сценариях, управляемых событиями.

В объекте WScript , который является корневым в иерархии объектной модели Windows Script Host ( WSH ), имеется возможность перехватывать события, порождаемые элементами управления Active X . Данный объект доступен из любого сценария WSH , поэтому для того чтобы обращаться к его методам и свойствам, нет необходимости специально его создавать.

Чтобы создать экземпляр объекта Active X , используется метод CreateObject объекта WScript . Причина, по которой следует использовать именно метод CreateObject объекта WScript , а не функцию CreateObject , имеющуюся в VBScript , можно выразить, в частности, так: «Принципиальная разница между методом CreateObject и функцией CreateObject состоит в их дополнительных вторых параметрах (соответственно, strPrefix и location ). Второй параметр метода CreateObject поддерживает перехват событий от объектов автоматизации и источников событий. Что касается второго параметра функции CreateObject , то он используется для создания объектов на удаленных компьютерах».

Все, что требуется для создания обработчика событий – это второй параметр метода CreateObject . Например, при помощи команды

создается объект InternetExplorer . Application и организуется обработка событий, генерируемых этим объектом. Второй параметр ( IE _) определяет префикс, который мы должны использовать в имени процедуры, являющейся обработчиком событий. Имя обработчика должно начинаться с этого префикса (обычно представляет собой сокращенное название объекта), за которым следует имя обрабатываемого события. Например, имя обработчика для события onQuit объекта IE может выглядеть как IE _ onQuit .

В принципе, данное соглашение об именовании не является строго обязательным. Некоторые разработчики предпочитают использовать в качестве префикса не имя объекта, а обозначение SINK _. Но все это хорошо до тех пор, пока вам не потребуется отслеживать в сценарии события от двух или более объектов. В этом случае придется использовать имена SINK 1_, SINK 2_ и т.д., что, в конечном счете, может привести к путанице.

Как отмечалось выше, обработчиками событий являются процедуры, поэтому для их создания используется предложение Sub языка VBScript . Например, создание процедуры, обрабатывающей событие onQuit приложения IE может быть реализовано следующим образом:

Sub IE _ onQuit
‘ Здесь размещаются команды, выполняемые процедурой.
End Sub

Какие именно действия должны выполняться в ответ на то или иное событие, зависит от события, а также от того результата, который вы хотите получить. Рассмотрим представленный в Листинге 1 пример сценария SimpleEventSink.vbs. Он начинается с предложения Option Explicit и объявления переменной objIE . Далее создается экземпляр объекта InternetExplorer.Application, для которого формируется ссылка на переменную objIE . Поскольку данный объект будет перехватывать события, для обработки события onQuit создана процедура IE_onQuit (см. фрагмент с меткой A Листинга 1). Обработчик IE_onQuit после приема события выполняет два действия. Сначала он выводит сообщение о том, что событие произошло. Далее, используя метод Quit объекта WScript , он принудительно завершает сценарий. Завершение сценария реализовано в обработчике события по той причине, что в основном теле сценария вызывается окно IE в видимом режиме и запускается бесконечный цикл, ожидающий приема события. Таким образом, если обработчик события не будет завершать сценарий, его выполнение не закончится никогда.

Читать еще:  Как в фаерфоксе почистить кэш

Внутри бесконечного цикла с помощью метода Sleep объекта WScript выполнение сценария приостанавливается на 5 миллисекунд (5 мс). Если вы используете бесконечный цикл, подобный этому, то обязательно добавляйте в него строку Sleep . Если этого не сделать, процесс WSH займет более 90% ресурсов процессора, в результате чего завершить этот процесс вы сможете только с помощью диспетчера задач Task Manager Windows .

Также следует убедиться в том, что при обработке события onQuit останавливается процесс закрытия IE . При приеме какого-либо события может возникнуть ситуация, когда источник события ожидает результатов. Данная задержка обычно не приводит к проблемам, но если ваша программа входит в обобщенный процесс, то это может предотвратить закрытие IE .

События, порождаемые ошибками

В сценариях WSH перехват событий, связанных с ошибками, и формирование отклика на них выполняются автоматически. Допустим, вы написали сценарий из четырех строк, третья строка которого выдает ошибку. Когда выполнение сценария доходит до третьей строки, WSH генерирует событие ошибки. Далее WSH автоматически перехватывает это событие, завершает выполнение сценария и стандартным образом выводит подробное описание ошибки в диалоговое окно или в командную строку, в зависимости от того, как был запущен сценарий (через wscript . exe или cscript . exe , соответственно).

Вы можете принудительно отключить обработку ошибок в сценарии WSH , для чего в него включается предложение On Error Resume Next . Если используется эта инструкция и WSH обнаруживает ошибку, то, по возможности, он будет продолжать дальнейшее выполнение сценария. Иначе говоря, при этом выполнение сценария не прекращается. Обычно инструкция On Error Resume Next размещается в начале сценария, хотя, в принципе, она может включаться в текст в любом месте.

Если используется инструкция On Error Resume Next , тогда вам следует предусмотреть в своем сценарии какие-либо альтернативные методы проверки ошибок. В одном из примеров для перехвата и обработки ошибок периода выполнения применяется процедура CheckError . Она использует возможности объекта Err , имеющегося в VBScript , который возвращает информацию об ошибках периода выполнения. Этот внутренний объект имеет глобальную область действия, поэтому специально создавать его экземпляр внутри сценария не требуется. А поскольку мы можем задавать свойства объекта Err , следовательно, в сценариях можно генерировать ошибки, которые могут быть автоматически обработаны либо WSH , либо другим обработчиком ошибок (например, таким как процедура CheckError ).

Пример того, как можно работать с объектом Err , показан в Листинге 2 (сценарий SimpleRaiseError . vbs ). Если вы хотите генерировать какие-либо свои ошибки, тогда нужно использовать для них шестнадцатеричные значения, превышающие 80040000. Поэтому в сценарии SimpleRaiseError.vbs сначала объявляется константа vbObjectError, ей присваивается шестнадцатеричное значение 80040000, которое затем увеличивается на 1.

Далее объект Err очищается с помощью метода Clear , таким образом, исключается возможность существования ошибок, появлявшихся ранее. Вообще говоря, очистка существующих параметров ошибок перед генерацией новой ошибки является хорошей практикой, поскольку в противном случае объект Err может содержать данные, сохранившиеся в нем от предыдущей ошибки. Когда WSH обнаруживает строку, содержащую метод Clear или предложение On Error Resume Next , он сбрасывает свойства объекта Err в 0 (т.е. присваивает им пустые значения).

После очистки параметров ошибки я использую метод Raise объекта Err с тремя из пяти возможных параметров. Первый параметр представляет собой номер ошибки, который я предполагаю использовать, в данном случае это число 80040001. Второй параметр определяет источник в объекте или сценарии, являющийся причиной возникновения ошибки. Третий параметр — это строка, содержащая краткое описание ошибки. Два оставшиеся параметра, которые я не стал использовать – параметры helpfile и helpcontext – применяются для задания указателей на файл подсказки Help и на раздел в этом файле, соответственно. Эти параметры вы вряд ли будете использовать в сценариях. Завершается сценарий выводом на экран информации, принятой объектом Err , для чего используется функция MsgBox .

Чтобы получить более подробную информацию о методах обработки ошибок, зайдите на страницу TechNet Script Center ( http :// www . microsoft . com / technet / scriptcenter / default . asp ). Затем в каталоге , находящемся слева , последовательно перейдите по ссылкам Scripting Guides, Windows 2000 Scripting Guide, Scripting Concepts and Technologies for System Administration, VBScript Primer, VBScript Reference, Error Handling.

События WSC

Компоненты управления, поддерживающие автоматизацию, можно создавать самостоятельно – причем для этого не надо быть программистом или иметь какое-либо инструментальное средство для разработки программ. В качестве альтернативы программированию вы можете создавать собственные компоненты управления с поддержкой автоматизации и затем регистрировать их для дальнейшего использования. Аналогично компонентам управления Active X , подобные компоненты могут иметь свои методы, свойства и события. Они называются компонентами WSC .

Более подробную информацию о WSC можно получить из Microsoft Developer Network ( MSDN ) Library ( http :// msdn . microsoft . com / library ). Для этого в левой части окна, где отображаются каталоги, последовательно перейдите по следующим ссылкам: Web Development , Scripting , Documentation , Windows Script Technologies , Windows Script Components .

Жизнь, полная событий

Надеюсь, что данная публикация послужит для вас хорошим введением в основы работы с событиями в WSH . В следующей статье я расскажу, как создавать более сложные сценарии, управляемые событиями, в том числе сценарии, которые выполняют перехват событий, порождаемых ошибками сценариев, выполняемых удаленно, а также сценарии, осуществляющие синхронный и асинхронный мониторинг событий с использованием WMI .

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

  • 57102 просмотра

Комментарии

Да, можно и часть.
На сайте есть функция для поиска нужных тегов в 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-ое количество ссылок — макросы — выполнить и макрос их обрабатывает? И ещё, выводить содержимое ссылки не в новом документе, а в ячейке соседнего столбца? Понимаю, раскатал губу, своими запросами, не сочтите за наглость! Заранее благодарю за ответ.

Добрый день! возможно уже есть пример описания получения части данных со 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:

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

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 .

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.

Ссылка на основную публикацию
Adblock
detector