Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Копирование данных в Excel из активного окна браузера IE - Мир MS Excel

Старая форма входа
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных в Excel из активного окна браузера IE (Макросы/Sub)
Копирование данных в Excel из активного окна браузера IE
andry_raz Дата: Четверг, 15.03.2018, 00:18 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Подскажите пожалуйста! Уже неделю ищу на просторах не могу найти. Сразу говорю, что в макросах новичок. Мне необходимо, чтобы макрос копировал данные из открытого активного окна браузера IE (тоесть не использовал http запросы, так как система, для которой я делаю эту возможность крайне кривая) и вставлял в ексель. Осуществимо это в принципе или нет? Подскажите решение пожалуйста.
 
Ответить
СообщениеПодскажите пожалуйста! Уже неделю ищу на просторах не могу найти. Сразу говорю, что в макросах новичок. Мне необходимо, чтобы макрос копировал данные из открытого активного окна браузера IE (тоесть не использовал http запросы, так как система, для которой я делаю эту возможность крайне кривая) и вставлял в ексель. Осуществимо это в принципе или нет? Подскажите решение пожалуйста.

Автор - andry_raz
Дата добавления - 15.03.2018 в 00:18
SLAVICK Дата: Четверг, 15.03.2018, 10:42 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Уже неделю ищу на просторах не могу найти.

тут есть интересная тема

[vba]
Код
Sub d()
    a = GetIE.Document.body.innerText
    MsgBox Left(a, 500)
    arr = Split(a, vbLf)
    Cells.Clear
    Cells(1, 1).Resize(UBound(arr) + 1, 1) = Application.Transpose(arr)
End Sub
Function GetIE() As Object
'https://stackoverflow.com/questions/25897956/get-existing-ie-via-vba?rq=1
Dim ShellApp As Object, ShellWindows As Object, i As Long
Dim IEObject As Object

Set ShellApp = CreateObject("Shell.Application")
Set ShellWindows = ShellApp.Windows()

For Each It In ShellWindows
    If InStr(It.FullName, "IEXPLORE") <> 0 Then
       Set IEObject = It
       Exit For  'No need to continue....
    End If
Next

'If IEObject Is Nothing Then Set IEObject = CreateObject("InternetExplorer.Application")

Set GetIE = IEObject

End Function
[/vba]
К сообщению приложен файл: iE.xlsm (18.5 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Уже неделю ищу на просторах не могу найти.

тут есть интересная тема

[vba]
Код
Sub d()
    a = GetIE.Document.body.innerText
    MsgBox Left(a, 500)
    arr = Split(a, vbLf)
    Cells.Clear
    Cells(1, 1).Resize(UBound(arr) + 1, 1) = Application.Transpose(arr)
End Sub
Function GetIE() As Object
'https://stackoverflow.com/questions/25897956/get-existing-ie-via-vba?rq=1
Dim ShellApp As Object, ShellWindows As Object, i As Long
Dim IEObject As Object

Set ShellApp = CreateObject("Shell.Application")
Set ShellWindows = ShellApp.Windows()

For Each It In ShellWindows
    If InStr(It.FullName, "IEXPLORE") <> 0 Then
       Set IEObject = It
       Exit For  'No need to continue....
    End If
Next

'If IEObject Is Nothing Then Set IEObject = CreateObject("InternetExplorer.Application")

Set GetIE = IEObject

End Function
[/vba]

Автор - SLAVICK
Дата добавления - 15.03.2018 в 10:42
andry_raz Дата: Пятница, 16.03.2018, 13:30 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, Спасибо за ответ. Искал на русскоязычных просторах... про другие языки не подумал. Да я и не очень на других языках. Про код, который Вы написали - у меня почему то ругается на переменную a (говорит что не может найти библиотеку или проеккт). Необходимо подключение библиотек дополнительных?
 
Ответить
СообщениеSLAVICK, Спасибо за ответ. Искал на русскоязычных просторах... про другие языки не подумал. Да я и не очень на других языках. Про код, который Вы написали - у меня почему то ругается на переменную a (говорит что не может найти библиотеку или проеккт). Необходимо подключение библиотек дополнительных?

Автор - andry_raz
Дата добавления - 16.03.2018 в 13:30
SLAVICK Дата: Пятница, 16.03.2018, 14:13 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Библиотек не нужно. А в моей книге работает?
Если да - тогда скорее всего у вас в начале модуля включено:
Option Explicit
Нужно объявить все переменные.


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеБиблиотек не нужно. А в моей книге работает?
Если да - тогда скорее всего у вас в начале модуля включено:
Option Explicit
Нужно объявить все переменные.

Автор - SLAVICK
Дата добавления - 16.03.2018 в 14:13
and_evg Дата: Пятница, 16.03.2018, 14:17 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
у меня почему то ругается на переменную a

у меня так же
А в моей книге работает?

У меня не работает
 
Ответить
Сообщение
у меня почему то ругается на переменную a

у меня так же
А в моей книге работает?

У меня не работает

Автор - and_evg
Дата добавления - 16.03.2018 в 14:17
SLAVICK Дата: Пятница, 16.03.2018, 14:24 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
У меня не работает

А internet explorer - открыт?
Там же идет поиск и захват именно открытого окна интернет internet explorer?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
У меня не работает

А internet explorer - открыт?
Там же идет поиск и захват именно открытого окна интернет internet explorer?

Автор - SLAVICK
Дата добавления - 16.03.2018 в 14:24
Mikael Дата: Пятница, 16.03.2018, 14:27 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 80
Репутация: 31 ±
Замечаний: 0% ±

Excel 2010
У меня не работает

IE запущен? Если он не запущен, а будет Empty.
 
Ответить
Сообщение
У меня не работает

IE запущен? Если он не запущен, а будет Empty.

Автор - Mikael
Дата добавления - 16.03.2018 в 14:27
and_evg Дата: Пятница, 16.03.2018, 14:50 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 452
Репутация: 78 ±
Замечаний: 0% ±

Excel 2007
А internet explorer - открыт?

IE запущен?
Да
 
Ответить
Сообщение
А internet explorer - открыт?

IE запущен?
Да

Автор - and_evg
Дата добавления - 16.03.2018 в 14:50
sboy Дата: Пятница, 16.03.2018, 14:57 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Тоже проверил - не работает (ИЕ открыт, страница загружена)

К сообщению приложен файл: 4668718.jpg (38.9 Kb) · 2327271.jpg (22.1 Kb)


Яндекс: 410016850021169
 
Ответить
СообщениеТоже проверил - не работает (ИЕ открыт, страница загружена)


Автор - sboy
Дата добавления - 16.03.2018 в 14:57
SLAVICK Дата: Пятница, 16.03.2018, 15:19 | Сообщение № 10
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
sboy, and_evg, странно - может процесс по другому называется.
Запустите процедуру отдельно :
[vba]
Код
Function GetIE() As Object

Dim ShellApp As Object, ShellWindows As Object, i As Long
Dim IEObject As Object

Set ShellApp = CreateObject("Shell.Application")
Set ShellWindows = ShellApp.Windows()

For Each It In ShellWindows
Debug.Print It.FullName
    If InStr(It.FullName, "IEXPLORE") <> 0 Then
       Set IEObject = It
       
       Exit For  'No need to continue....
    End If
Next

'If IEObject Is Nothing Then Set IEObject = CreateObject("InternetExplorer.Application")

Set GetIE = IEObject

End Function
[/vba]
что выдает Debug.Print
У меня:
C:\Windows\Explorer.EXE
C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениеsboy, and_evg, странно - может процесс по другому называется.
Запустите процедуру отдельно :
[vba]
Код
Function GetIE() As Object

Dim ShellApp As Object, ShellWindows As Object, i As Long
Dim IEObject As Object

Set ShellApp = CreateObject("Shell.Application")
Set ShellWindows = ShellApp.Windows()

For Each It In ShellWindows
Debug.Print It.FullName
    If InStr(It.FullName, "IEXPLORE") <> 0 Then
       Set IEObject = It
       
       Exit For  'No need to continue....
    End If
Next

'If IEObject Is Nothing Then Set IEObject = CreateObject("InternetExplorer.Application")

Set GetIE = IEObject

End Function
[/vba]
что выдает Debug.Print
У меня:
C:\Windows\Explorer.EXE
C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE

Автор - SLAVICK
Дата добавления - 16.03.2018 в 15:19
sboy Дата: Пятница, 16.03.2018, 15:32 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Да у меня маленькими буквами надо
C:\Windows\Explorer.EXE
C:\Program Files\Internet Explorer\iexplore.exe
textcompare нужен в опциях или в функции, тогда работает
[vba]
Код
If InStr(1, It.FullName, "IEXPLORE", vbTextCompare) <> 0 Then
[/vba]


Яндекс: 410016850021169

Сообщение отредактировал sboy - Пятница, 16.03.2018, 15:46
 
Ответить
СообщениеДа у меня маленькими буквами надо
C:\Windows\Explorer.EXE
C:\Program Files\Internet Explorer\iexplore.exe
textcompare нужен в опциях или в функции, тогда работает
[vba]
Код
If InStr(1, It.FullName, "IEXPLORE", vbTextCompare) <> 0 Then
[/vba]

Автор - sboy
Дата добавления - 16.03.2018 в 15:32
SLAVICK Дата: Пятница, 16.03.2018, 15:52 | Сообщение № 12
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
вот уж мелкомягкие :D - по ушам бы им надавать...
and_evg,
тогда так
[vba]
Код
Sub d()
    a = GetIE.Document.body.innerText
    MsgBox Left(a, 500)
    arr = Split(a, vbLf)
    Cells.Clear
    Cells(1, 1).Resize(UBound(arr) + 1, 1) = Application.Transpose(arr)
End Sub
Function GetIE() As Object

Dim ShellApp As Object, ShellWindows As Object, i As Long
Dim IEObject As Object

Set ShellApp = CreateObject("Shell.Application")
Set ShellWindows = ShellApp.Windows()

For Each It In ShellWindows
Debug.Print It.FullName
    If InStr(1, It.FullName, "IEXPLORE", vbTextCompare) <> 0 Then
       Set IEObject = It
       Exit For  'No need to continue....
    End If
Next

'If IEObject Is Nothing Then Set IEObject = CreateObject("InternetExplorer.Application")

Set GetIE = IEObject

End Function

[/vba]
К сообщению приложен файл: iE-4-.xlsm (20.0 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщениевот уж мелкомягкие :D - по ушам бы им надавать...
and_evg,
тогда так
[vba]
Код
Sub d()
    a = GetIE.Document.body.innerText
    MsgBox Left(a, 500)
    arr = Split(a, vbLf)
    Cells.Clear
    Cells(1, 1).Resize(UBound(arr) + 1, 1) = Application.Transpose(arr)
End Sub
Function GetIE() As Object

Dim ShellApp As Object, ShellWindows As Object, i As Long
Dim IEObject As Object

Set ShellApp = CreateObject("Shell.Application")
Set ShellWindows = ShellApp.Windows()

For Each It In ShellWindows
Debug.Print It.FullName
    If InStr(1, It.FullName, "IEXPLORE", vbTextCompare) <> 0 Then
       Set IEObject = It
       Exit For  'No need to continue....
    End If
Next

'If IEObject Is Nothing Then Set IEObject = CreateObject("InternetExplorer.Application")

Set GetIE = IEObject

End Function

[/vba]

Автор - SLAVICK
Дата добавления - 16.03.2018 в 15:52
andry_raz Дата: Пятница, 16.03.2018, 16:00 | Сообщение № 13
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, сейчас ругается на отсутствие workwithfiles.xla...
 
Ответить
СообщениеSLAVICK, сейчас ругается на отсутствие workwithfiles.xla...

Автор - andry_raz
Дата добавления - 16.03.2018 в 16:00
SLAVICK Дата: Пятница, 16.03.2018, 16:19 | Сообщение № 14
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
ругается на отсутствие workwithfiles.xla...

нужно было просто разорвать связь...
К сообщению приложен файл: 222.xlsm (17.3 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
ругается на отсутствие workwithfiles.xla...

нужно было просто разорвать связь...

Автор - SLAVICK
Дата добавления - 16.03.2018 в 16:19
andry_raz Дата: Пятница, 16.03.2018, 16:52 | Сообщение № 15
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Заработало. Однако теперь выдает пустое поле... тоесть не считывает почему-то с explorera информацию..
К сообщению приложен файл: 9699089.jpg (18.4 Kb)


Сообщение отредактировал andry_raz - Суббота, 17.03.2018, 09:44
 
Ответить
СообщениеЗаработало. Однако теперь выдает пустое поле... тоесть не считывает почему-то с explorera информацию..

Автор - andry_raz
Дата добавления - 16.03.2018 в 16:52
SLAVICK Дата: Понедельник, 19.03.2018, 10:21 | Сообщение № 16
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Какая у Вас винда/офис.
Может 10-ка?
Тогда там не IEXPLORE - там Edge.
Что у Вас выдает функция GetIE в окно Immediate?


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеКакая у Вас винда/офис.
Может 10-ка?
Тогда там не IEXPLORE - там Edge.
Что у Вас выдает функция GetIE в окно Immediate?

Автор - SLAVICK
Дата добавления - 19.03.2018 в 10:21
andry_raz Дата: Понедельник, 19.03.2018, 10:59 | Сообщение № 17
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
SLAVICK, Винда XP, Офис 2007. И я очень извиняюсь... что за окно Immediate?
 
Ответить
СообщениеSLAVICK, Винда XP, Офис 2007. И я очень извиняюсь... что за окно Immediate?

Автор - andry_raz
Дата добавления - 19.03.2018 в 10:59
SLAVICK Дата: Понедельник, 19.03.2018, 11:36 | Сообщение № 18
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Винда XP, Офис 2007.

Возможно баг в офисе - СП - какой?
- почему у Вас в подписи 2016?
А может и с ХР связано. У меня сейчас нет возможности проверить на таких параметрах.
У меня сейчас 2013офис и 7-ка 64-х.
что за окно Immediate?

Гугл рулит. Например тут понятно описано как его найти.
И функция из поста 9-ь выводит туда список всех Shell.Application.
Вот если там выводится хоть что-то это одно дело, если вообще пусто - то совсем другое...


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
Винда XP, Офис 2007.

Возможно баг в офисе - СП - какой?
- почему у Вас в подписи 2016?
А может и с ХР связано. У меня сейчас нет возможности проверить на таких параметрах.
У меня сейчас 2013офис и 7-ка 64-х.
что за окно Immediate?

Гугл рулит. Например тут понятно описано как его найти.
И функция из поста 9-ь выводит туда список всех Shell.Application.
Вот если там выводится хоть что-то это одно дело, если вообще пусто - то совсем другое...

Автор - SLAVICK
Дата добавления - 19.03.2018 в 11:36
andry_raz Дата: Понедельник, 19.03.2018, 12:01 | Сообщение № 19
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
СП 3. Окно пишет C:\Program Files\Internet Explorer\IEXPLORE.EXE. Возможно и с XP, так как дома на 10ке 64х и 2013 офисом выдавало инфу с странички, правда все время с одной и той же и не важно какая при этом была открыта страничка в эксплорере.
 
Ответить
СообщениеСП 3. Окно пишет C:\Program Files\Internet Explorer\IEXPLORE.EXE. Возможно и с XP, так как дома на 10ке 64х и 2013 офисом выдавало инфу с странички, правда все время с одной и той же и не важно какая при этом была открыта страничка в эксплорере.

Автор - andry_raz
Дата добавления - 19.03.2018 в 12:01
SLAVICK Дата: Понедельник, 19.03.2018, 12:50 | Сообщение № 20
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
C:\Program Files\Internet Explorer\IEXPLORE.EXE

Странно - тогда нужно смотреть пошагово - где что слетает.

правда все время с одной и той же и не важно какая при этом была открыта страничка в эксплорере.

Тут проблема в том, что IEXPLORE - для каждого окна создает свой процесс. А макрос ищет по названию процесса. И выходит из цикла когда находит процесс с подходящим именем.
Никакой пометки что именно этот процесс сейчас активен - я не нашел.
Чтобы увидеть все процессы - удалите строку
[vba]
Код
Exit For  'No need to continue....
[/vba]


Иногда все проще чем кажется с первого взгляда.
 
Ответить
Сообщение
C:\Program Files\Internet Explorer\IEXPLORE.EXE

Странно - тогда нужно смотреть пошагово - где что слетает.

правда все время с одной и той же и не важно какая при этом была открыта страничка в эксплорере.

Тут проблема в том, что IEXPLORE - для каждого окна создает свой процесс. А макрос ищет по названию процесса. И выходит из цикла когда находит процесс с подходящим именем.
Никакой пометки что именно этот процесс сейчас активен - я не нашел.
Чтобы увидеть все процессы - удалите строку
[vba]
Код
Exit For  'No need to continue....
[/vba]

Автор - SLAVICK
Дата добавления - 19.03.2018 в 12:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование данных в Excel из активного окна браузера IE (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!