Подскажите пожалуйста! Уже неделю ищу на просторах не могу найти. Сразу говорю, что в макросах новичок. Мне необходимо, чтобы макрос копировал данные из открытого активного окна браузера IE (тоесть не использовал http запросы, так как система, для которой я делаю эту возможность крайне кривая) и вставлял в ексель. Осуществимо это в принципе или нет? Подскажите решение пожалуйста.
Подскажите пожалуйста! Уже неделю ищу на просторах не могу найти. Сразу говорю, что в макросах новичок. Мне необходимо, чтобы макрос копировал данные из открытого активного окна браузера IE (тоесть не использовал http запросы, так как система, для которой я делаю эту возможность крайне кривая) и вставлял в ексель. Осуществимо это в принципе или нет? Подскажите решение пожалуйста.andry_raz
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")
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")
SLAVICK, Спасибо за ответ. Искал на русскоязычных просторах... про другие языки не подумал. Да я и не очень на других языках. Про код, который Вы написали - у меня почему то ругается на переменную a (говорит что не может найти библиотеку или проеккт). Необходимо подключение библиотек дополнительных?
SLAVICK, Спасибо за ответ. Искал на русскоязычных просторах... про другие языки не подумал. Да я и не очень на других языках. Про код, который Вы написали - у меня почему то ругается на переменную a (говорит что не может найти библиотеку или проеккт). Необходимо подключение библиотек дополнительных?andry_raz
Библиотек не нужно. А в моей книге работает? Если да - тогда скорее всего у вас в начале модуля включено: Option Explicit Нужно объявить все переменные.
Библиотек не нужно. А в моей книге работает? Если да - тогда скорее всего у вас в начале модуля включено: Option Explicit Нужно объявить все переменные.SLAVICK
Да у меня маленькими буквами надо C:\Windows\Explorer.EXE C:\Program Files\Internet Explorer\iexplore.exe textcompare нужен в опциях или в функции, тогда работает [vba]
Код
If InStr(1, It.FullName, "IEXPLORE", vbTextCompare) <> 0 Then
[/vba]
Да у меня маленькими буквами надо C:\Windows\Explorer.EXE C:\Program Files\Internet Explorer\iexplore.exe textcompare нужен в опциях или в функции, тогда работает [vba]
Код
If InStr(1, It.FullName, "IEXPLORE", vbTextCompare) <> 0 Then
вот уж мелкомягкие - по ушам бы им надавать... 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]
вот уж мелкомягкие - по ушам бы им надавать... 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")
Возможно баг в офисе - СП - какой? - почему у Вас в подписи 2016? А может и с ХР связано. У меня сейчас нет возможности проверить на таких параметрах. У меня сейчас 2013офис и 7-ка 64-х.
Гугл рулит. Например тут понятно описано как его найти. И функция из поста 9-ь выводит туда список всех Shell.Application. Вот если там выводится хоть что-то это одно дело, если вообще пусто - то совсем другое...
Возможно баг в офисе - СП - какой? - почему у Вас в подписи 2016? А может и с ХР связано. У меня сейчас нет возможности проверить на таких параметрах. У меня сейчас 2013офис и 7-ка 64-х.
Гугл рулит. Например тут понятно описано как его найти. И функция из поста 9-ь выводит туда список всех Shell.Application. Вот если там выводится хоть что-то это одно дело, если вообще пусто - то совсем другое...SLAVICK
СП 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
правда все время с одной и той же и не важно какая при этом была открыта страничка в эксплорере.
Тут проблема в том, что IEXPLORE - для каждого окна создает свой процесс. А макрос ищет по названию процесса. И выходит из цикла когда находит процесс с подходящим именем. Никакой пометки что именно этот процесс сейчас активен - я не нашел. Чтобы увидеть все процессы - удалите строку [vba]
правда все время с одной и той же и не важно какая при этом была открыта страничка в эксплорере.
Тут проблема в том, что IEXPLORE - для каждого окна создает свой процесс. А макрос ищет по названию процесса. И выходит из цикла когда находит процесс с подходящим именем. Никакой пометки что именно этот процесс сейчас активен - я не нашел. Чтобы увидеть все процессы - удалите строку [vba]