Vba закрыть internet explorer

Обновлено: 05.07.2024

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

Я посмотрел этот метод, и он должен закрыть экземпляр IE. Однако это не работает для меня. Диспетчер задач подтверждает, что процесс iexplorer.exe все еще работает. Если я запускаю макрос несколько раз, новый экземпляр добавляется и никогда не закрывается.

Как я могу заставить макрос правильно закрыть экземпляр?

Я использую IE 8.0 и VBA 7.0 для этого.

1 ответ

У меня есть несколько пользователей clever, которые написали электронную таблицу excel, которая автоматизирует некоторые из их задач на нашем intranet/timesheet., кажется, что созданный экземпляр Internet Explorer делает не все, что я ожидаю от браузера, например, устанавливает файлы cookie. Есть.

На определенном веб-сайте, если я открываю новый экземпляр IE, я уже аутентифицируюсь, если в то же время есть еще один открытый экземпляр IE, в который я ранее входил. Если я открываю tWebbrowser из Delphi,я не аутентифицируюсь. Поскольку я не хочу входить в каждый отдельный tWebbrowser, который.

Как @Sorceri statet правильно в комментариях, я создал два экземпляра. Следующий код завершает работу экземпляра без проблем.

Интересным в приведенном выше (неправильном) коде является то, что он действительно открывает 2 экземпляра, но не закрывает ни один из них в конце.

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

Я хочу закрыть текущую вкладку Internet explorer по нажатию кнопки 'Log Out'. Это новая функциональность, которая будет реализована в моем веб-приложении. Мое приложение поддерживает только интернет.

Как закрыть экземпляр Excel, запущенный слиянием почты этот код, работающий внутри лаунчера, не имеет доступа к Excel, работающему через DDE ?? 'For i = 1 To Workbooks.Count ' MsgBox (here +.

Как получить доступ к классическому объекту автоматизации Internet Explorer COM для запущенного экземпляра Internet Explorer? То есть, если у меня есть интернет Explorer, открытый в нескольких.

У меня есть несколько пользователей clever, которые написали электронную таблицу excel, которая автоматизирует некоторые из их задач на нашем intranet/timesheet., кажется, что созданный экземпляр.

На определенном веб-сайте, если я открываю новый экземпляр IE, я уже аутентифицируюсь, если в то же время есть еще один открытый экземпляр IE, в который я ранее входил. Если я открываю tWebbrowser.

не могли бы вы рассказать мне, как использовать подстановочные знаки в excel vba internet explorer? каждый раз это число меняется. Как нажать на эту кнопку через.

Я использовал следующий код в excel vba returnval = Shell(explorer.exe & folderPath, vbNormalFocus) чтобы открыть папки, это работает нормально, но он запускает новый процесс windows explorer.

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

Я могу переключить интернет-прокси на Internet Explorer, перейдя в Internet options > Connections > LAN settings > Proxy Server > Use a proxy server for your LAN . Когда я это делаю, он переключает.

Я пытаюсь щелкнуть выпадающее меню типа в Internet Explorer, используя код Excel VBA. Вот код HTML: <div nowrap= style=visibility: visible;> <div.

Запустить Internet Explorer по ссылке() на скачивание файла, в открывшемся диалоговом окне сохранить в папку "Downloads", закрыть открывшееся диалоговое окно загрузок и окно браузера.

Пользуясь советами, написал следующее

- не знаю, как прописать момент открытия диалогового окна - поэтому поставил строчку ожидания 10 секунд
- не нравятся SendKeys - зависит от активного окна, хотелось бы конкретного обращения к IE, который хочется запускать в .Visible = false

прилагаю скрин диалогового окна IE

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

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

Сохранить файл в папку, а ссылку на его в БД, открыть файл по ссылке из Бд
Здравствуйте. Не получается сохранить файлы в папку Data (c записью ссылки на него в БД),а затем.

Открыть, сохранить, закрыть файл
программа осуществляет обработку данных из файла.Главное меню имеет вид: 1)файл 2)редактировать.

Открыть, сохранить и закрыть файл Excel
Господа, помогите реализовать данную задачу. Раз в день надо открыть файл exel (при открытии.

Решение

Ваша ссылка требует логина с паролем до того.
А так можно посмотреть рекомендуемое инетом.

Вариант точно работает:

Да, вы правы, почему-то надо сначала зайти на исходную страницу, только потом начинает работать прямая ссылка
[удалена]

в правом верхнем углу есть кнопка "Download" - скачивание в xls формате этой страницы.

Ваш пример не работает в этом случае - открывается папка Загрузки, но в ней нет скаченного файла, ошибку тоже не выдаёт.

вообще изначально пытался прописать открытие страницы и нажатие кнопки "download", но не знаю как к ней подступиться - по примерам на форуме предлагают решения по GetElementID или TagName, но у неё нет ни id, ни tagname.

В идеале, конечно, хорошо, если бы так: открыть страницу, нажать download => save to Downloads, закрыть IE и окно загрузок.

Это загрузка без авторизации, по прямой ссылке. Если нужно авторизоваться, то допиливать, где-то на форуме было, как кликать по кнопкам.
При работе с объектами окна загрузки IE возникать не будет. много примеров работы с ИЕ
Для авторизации нежно заполнить поля логин-пароля и нажать вход
примрно так

Ещё раз поясню: по вот этой ссылке (***) открывается страница (у любого - без требования авторизации!).
В правом верхнем углу есть кнопка Download, генерирующая файл .xls (скриншот прилагаю)

Мне нужно:
- открыть через VBA IE по данной ссылке (уже решено)
- нажать кнопку Download в правом верхнем углу
- в открывшемся диалоговом окне сохранить в папку Downloads (Загрузки)
- закрыть IE
(дальнейшую работу со скаченным файлом уже настроил)

всё это без подключения каких-либо библиотек в Tools (нужна универсальность)

Не знаю, как отследить кнопку Download (писал выше), и как командовать IE без SendKeys

В VBA недавно, так что кто может подсказать - буду рад.

Решение

только зачем?
Будет тот же результат что и первом посте

SendKeys - как я понял - работает с привязкой к активному окну. Если человек щёлкнет во время операции куда-нибудь, то SendKeys уже не будут работать. Прямое обращение всегда лучше - хотя бы для "защиты от дурака"

И последнее: как нажать "Save" в диалоговом окне?

на просторах нашёл такой код

Option Explicit
Public Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Public Declare Function SetForegroundWindow Lib "user32" _
(ByVal hWnd As Long) As Long

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long

Public Const BM_CLICK = &HF5
Public Const WM_SETTEXT = &HC
Public Const WM_GETTEXT = &HD
Public Const WM_GETTEXTLENGTH = &HE

Dim hWnd As Long
Dim timeout As Date

'Find the File Download window, waiting a maximum of 30 seconds for it to appear

Debug.Print " Internet Explorer window "; Hex(hWnd)

'Find the child Save button

hWnd = FindWindowEx(hWnd, 0, "Button", "&Save")
Debug.Print " Save button "; Hex(hWnd)
End If

'Click the Save button

SetForegroundWindow (hWnd)
Sleep 1000 'this sleep is required and 600 miiliseconds seems to be the minimum that works
SendMessage hWnd, BM_CLICK, 0, 0
End If
End Sub

Его интеграция с Windows позволяет несколькими удивительными способами управлять Internet Explorer, используя сценарий Visual Basic для приложений (VBA) из любого приложения, которое его поддерживает, например Word, Outlook или Excel.

За прошедшие годы мы показали вам, как делать действительно классные вещи с VBA. Например, вы можете использовать его для отправки электронных писем непосредственно из Excel

, вы можете автоматически экспортировать задачи Outlook в электронную таблицу Excel

и вы даже можете создать свой собственный интернет-браузер

В этом случае вы собираетесь подключить Excel с IE. Почему IE? Поскольку Internet Explorer настолько хорошо интегрирован с операционной системой, что вам не нужно много делать, чтобы начать использовать автоматизацию IE в VBA в других продуктах Microsoft, таких как Word или Excel. В этом вся прелесть. В этой статье вы увидите, как работает эта автоматизация, а в следующей статье вы узнаете, как сделать то же самое с другими браузерами.

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

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

Автоматизация Internet Explorer с помощью VBA

IE-automation1

Предположительно, вы уже создали заголовок для URL, если хотите, но вам это не нужно. Это действительно библиотека хранения URL, поэтому заголовки не имеют значения. Как только вы добавите кнопку, дважды щелкните по ней, чтобы открыть редактор VBA. Внизу слева вы увидите свойства вашей новой кнопки.

Спаси URLs

Затем перейдите в меню «Сервис» в верхней части редактора VBA, нажмите «Ссылки» в меню и прокрутите длинный список, чтобы найти ссылку «Microsoft Internet Controls». Установите флажок слева от него и нажмите кнопку ОК.

IE-automation3

Теперь вы готовы к работе. В текстовой области редактора вы должны увидеть строку «Private Sub cmdSaveURLs_Click ()». Если вы его не видите, щелкните левое раскрывающееся поле над текстовой областью и найдите cmdSaveURLs в списке. Выберите его, и он создаст функцию Click () для вас.

Это код, который вы хотите вставить в эту функцию:

Ссылка Microsoft Scripting Runtime позволяет вам получить доступ к объекту ShellWindows, который позволяет вам перебирать Windows и находить экземпляры IE, которые у вас открыты. Этот скрипт найдет все открытые вами URL-адреса и запишет их в электронную таблицу Excel.

IE-automation4

IE-automation5

С новым скриптом Excel просто нажмите кнопку «Загрузить URL-адреса», и он загрузится прямо в электронную таблицу.

IE-automation6

Одно предостережение. Если вы не используете строку заголовка, то вы захотите изменить строку «intRowPosition = 2» на «intRowPosition = 1», и она будет начинаться с первой строки, а не пропускать строку заголовка.

Открытие сохраненной рабочей области браузера

Здесь есть несколько шагов, но, как вы видите, код не такой длинный и сложный. Вы создаете новый экземпляр IE, делаете его видимым (это откроет IE без загрузки URL). Затем он загрузит первый URL в списке.

IE-automation8

Часть скрипта «Пока IE.Busy» ждет, пока страница не загрузится полностью, а затем переходит к остальным URL-адресам в вашей электронной таблице, открывая новую вкладку (это то, что делает «CLng (2048)», пока он попадает в пустую ячейку вашей электронной таблицы, затем он прекращает открывать новые вкладки.Это мой браузер IE со всеми четырьмя исходными вкладками, восстановленными с помощью сценария автоматизации Excel IE.

IE-automation9

Резюме

Используете ли вы какой-либо вид автоматизации IE в своих приложениях VBA? Видите какие-нибудь другие интересные варианты использования такого элемента управления IE из Excel? Поделитесь своими мыслями и отзывами в разделе комментариев ниже!

макрос, который я создаю, берет имена из электронной таблицы Excel, открывает Internet Explorer и выполняет поиск в онлайн-каталоге. После поиска в каталоге он извлекает форму Java с именем менеджера в ней. Я могу вручную вкладка имя менеджера, щелкните правой кнопкой мыши, скопируйте ярлык, а затем опубликовать его обратно на листе. Тем не менее, у меня возникают проблемы с согласованным табулированием и копированием ярлыка.

  1. есть ли простой способ вернуть фокус на окна IE?
  2. Как скопировать ярлык, не щелкнув его вручную?

в начале вашего модуля поместите эту строку кода:

это называется Declare Statement и позволит вам получить доступ к SetForegroundWindow функция, встроенная в Windows. Эта функция живет в user32 DLL системы Windows. На самом деле существует ряд других функций среди нескольких библиотек DLL, которые доступны для VBA таким образом (см. ссылку для получения дополнительных примеров).

в коде при взаимодействии с объектом IE запишите the HWND (дескриптор к этому окну) вот так:

затем, после взаимодействия с Java, используйте это, чтобы продолжить:

это говорит системе Windows, чтобы установить окно, идентифицированное HWND как окно переднего плана (как следует из названия).

однако это может быть не нужно, в зависимости от того, как вы взаимодействуете с IE. Другими словами, если вам не нужно видеть/касаться окна, вы все равно можете взаимодействовать с помощью объект, как у вас уже есть в коде.

есть способы получить ярлык, который вы ищете с помощью кода, как GetElementById() и GetElementsByTagName() (см. здесь для получения дополнительной информации), но это будет зависеть от того, как источник был создан. например, an <a href замедления" макроса. У меня есть функция я пользуюсь все время для моих собственных методов. Надеюсь, это поможет вам сделать то, что вам нужно. Я изменил свой код ниже из моего собственного оригинала, так как у меня были дополнительные особенности, которые не относятся к вашему случаю. Если есть какие-либо ошибки с ним, я могу настроить по мере необходимости.

Читайте также: