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

Вход

Регистрация

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

 

= Мир MS Excel/Запрос QueryTables с yahoo невозможен из-за JavaScript - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрос QueryTables с yahoo невозможен из-за JavaScript (Макросы/Sub)
Запрос QueryTables с yahoo невозможен из-за JavaScript
friz-isuct Дата: Воскресенье, 08.12.2019, 00:40 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый вечер уважаемые форумчане, помогите пожалуйста решить проблему с запросом QueryTables:

Цель: получить HTML таблицу на листе Excel c активными гиперссылками в отдельных ячейках.

Как это делать мне известно, вот пример работающего кода:

[vba]
Код
Sub subWebLoad_HTML(txtURL As String)

Worksheets("Temp").Cells.Clear

'
Sheets("Temp").Select

'
    Application.CutCopyMode = False
    
    txtURL = "URL;https://finance.yahoo.com/screener/unsaved/bfd0d3b0-9328-4fe8-ad4b-c55e87104768?offset=0&count=100"
    With ActiveSheet.QueryTables.Add(Connection:=txtURL, Destination:=Range("$A$3"))
        '"URL;https://yandex.ru/search/?text=marketscreener.com%2FTHYSSENKRUPP-AG%20consensus&lr=115169&clid=2041431&win=87" _
        ', Destination:=Range("$A$3"))
        '.CommandType = 0
        .Name = txtURL
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
[/vba]

ПРОБЛЕМА:
Данный код в данный момент не работает с сайтом finance.yahoo.com

Причина:
При первом посещении сайта выходит сообщение на JavaScript, которое не поддерживается допотоптным встроенным браузером Excel.
Окно выглядит примерно так:
ScreenShot_1

Результат:
В результате макрос выдает мне текст этого окна

ScreenShot_2

Вопрос:

Есть ли возможность как то програмно закрыть это окно?
Таким образом была бы возможность использовать вышеприведеный макрос далее.

PS:

Я знаю как сохранить HTML/TEXT с помощью

Set IE = CreateObject("InternetExplorer.Application")
или
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")

Но эти варианты для меня не совсем удобные, так как дальнейшая переработка информации требует дополнительных решений. А в случае с QueryTables получается довольно простое решение.
Хотелось бы в идеале получать вот такую таблицу (см. файл).
К сообщению приложен файл: _1.xls (36.0 Kb)


Сообщение отредактировал friz-isuct - Воскресенье, 08.12.2019, 00:49
 
Ответить
СообщениеДобрый вечер уважаемые форумчане, помогите пожалуйста решить проблему с запросом QueryTables:

Цель: получить HTML таблицу на листе Excel c активными гиперссылками в отдельных ячейках.

Как это делать мне известно, вот пример работающего кода:

[vba]
Код
Sub subWebLoad_HTML(txtURL As String)

Worksheets("Temp").Cells.Clear

'
Sheets("Temp").Select

'
    Application.CutCopyMode = False
    
    txtURL = "URL;https://finance.yahoo.com/screener/unsaved/bfd0d3b0-9328-4fe8-ad4b-c55e87104768?offset=0&count=100"
    With ActiveSheet.QueryTables.Add(Connection:=txtURL, Destination:=Range("$A$3"))
        '"URL;https://yandex.ru/search/?text=marketscreener.com%2FTHYSSENKRUPP-AG%20consensus&lr=115169&clid=2041431&win=87" _
        ', Destination:=Range("$A$3"))
        '.CommandType = 0
        .Name = txtURL
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
[/vba]

ПРОБЛЕМА:
Данный код в данный момент не работает с сайтом finance.yahoo.com

Причина:
При первом посещении сайта выходит сообщение на JavaScript, которое не поддерживается допотоптным встроенным браузером Excel.
Окно выглядит примерно так:
ScreenShot_1

Результат:
В результате макрос выдает мне текст этого окна

ScreenShot_2

Вопрос:

Есть ли возможность как то програмно закрыть это окно?
Таким образом была бы возможность использовать вышеприведеный макрос далее.

PS:

Я знаю как сохранить HTML/TEXT с помощью

Set IE = CreateObject("InternetExplorer.Application")
или
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")

Но эти варианты для меня не совсем удобные, так как дальнейшая переработка информации требует дополнительных решений. А в случае с QueryTables получается довольно простое решение.
Хотелось бы в идеале получать вот такую таблицу (см. файл).

Автор - friz-isuct
Дата добавления - 08.12.2019 в 00:40
doober Дата: Воскресенье, 08.12.2019, 09:51 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
У меня без проблем Ваш код работает на 11 ишаке


 
Ответить
СообщениеУ меня без проблем Ваш код работает на 11 ишаке

Автор - doober
Дата добавления - 08.12.2019 в 09:51
friz-isuct Дата: Понедельник, 09.12.2019, 00:11 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
У меня без проблем Ваш код работает на 11 ишаке


Спасибо за тест кода! Мне остается только Вам завидовать! yes Так как у меня он выдает текст сообщения всплывающего при ПЕРВОМ посещении Yahoo.
Возможно Вы уже на этом сайте были до этого и как то обошли это окно. Либо оно всплывает у меня из-за немецкого IP...

Суть вопроса остается прежней, можно ли как то програмно закрывать такие окна с помощью vba. Либо решить данную проблему путем копирования настроек/истории excel браузера.
Насколько я понимаю (возможно я ошибаюсь) excel использует свой браузер, который не поддерживает JavaSkript, поэтому я не могу закрыть это окно (ScreenShot_1) при создании запроса (см. видео).

QueryTable_Yahoo

В связи с этим у меня два варианта:
1. У браузера excel где то должны храниться файлы настроек и истории, тогда можно бы было их скопировать, например Ваши настройки.
2. Возможно есть варианты написать небольшой код, который закроет это окно и оно больше не будет мешать:

см. на Видео_2

Так же HTML код страницы с мешающим окном в приложении. Там по сути нужно нажать программно вот эту кнопку:
[vba]
Код
<button type="submit" class="btn primary" name="agree" value="agree">

                            OK
                    </button>
                </div>
            </form>
            </div>
        </div>
        </div>

        <script src="https://s.yimg.com/oa/build/js/site-a4d72cd5.js" nonce="9FH29qUVRLfq88pfm7xijSyhVtQP0rjr"></script>
[/vba]
Возможно у кого то есть уже готовые решения?
К сообщению приложен файл: 3733153.xls (35.0 Kb)


Сообщение отредактировал friz-isuct - Понедельник, 09.12.2019, 00:18
 
Ответить
Сообщение
У меня без проблем Ваш код работает на 11 ишаке


Спасибо за тест кода! Мне остается только Вам завидовать! yes Так как у меня он выдает текст сообщения всплывающего при ПЕРВОМ посещении Yahoo.
Возможно Вы уже на этом сайте были до этого и как то обошли это окно. Либо оно всплывает у меня из-за немецкого IP...

Суть вопроса остается прежней, можно ли как то програмно закрывать такие окна с помощью vba. Либо решить данную проблему путем копирования настроек/истории excel браузера.
Насколько я понимаю (возможно я ошибаюсь) excel использует свой браузер, который не поддерживает JavaSkript, поэтому я не могу закрыть это окно (ScreenShot_1) при создании запроса (см. видео).

QueryTable_Yahoo

В связи с этим у меня два варианта:
1. У браузера excel где то должны храниться файлы настроек и истории, тогда можно бы было их скопировать, например Ваши настройки.
2. Возможно есть варианты написать небольшой код, который закроет это окно и оно больше не будет мешать:

см. на Видео_2

Так же HTML код страницы с мешающим окном в приложении. Там по сути нужно нажать программно вот эту кнопку:
[vba]
Код
<button type="submit" class="btn primary" name="agree" value="agree">

                            OK
                    </button>
                </div>
            </form>
            </div>
        </div>
        </div>

        <script src="https://s.yimg.com/oa/build/js/site-a4d72cd5.js" nonce="9FH29qUVRLfq88pfm7xijSyhVtQP0rjr"></script>
[/vba]
Возможно у кого то есть уже готовые решения?

Автор - friz-isuct
Дата добавления - 09.12.2019 в 00:11
friz-isuct Дата: Понедельник, 09.12.2019, 01:47 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Нашел удовлетворяющее меня решение проблемы тут:

planetaexcel.ru

Суть идеи делать QueryTable запрос к локальному HTML файлу, который можно сохранить с помощью Set IE = CreateObject("InternetExplorer.Application").

Так что тему можно считать закрытой, но было бы интересно узнать и другие решения, если они возможны (для общего развития):

Цитата
В связи с этим у меня два варианта:
1. У браузера excel где то должны храниться файлы настроек и истории, тогда можно бы было их скопировать, например Ваши настройки.
2. Возможно есть варианты написать небольшой код, который закроет это окно и оно больше не будет мешать:


Сообщение отредактировал friz-isuct - Понедельник, 09.12.2019, 03:27
 
Ответить
СообщениеНашел удовлетворяющее меня решение проблемы тут:

planetaexcel.ru

Суть идеи делать QueryTable запрос к локальному HTML файлу, который можно сохранить с помощью Set IE = CreateObject("InternetExplorer.Application").

Так что тему можно считать закрытой, но было бы интересно узнать и другие решения, если они возможны (для общего развития):

Цитата
В связи с этим у меня два варианта:
1. У браузера excel где то должны храниться файлы настроек и истории, тогда можно бы было их скопировать, например Ваши настройки.
2. Возможно есть варианты написать небольшой код, который закроет это окно и оно больше не будет мешать:

Автор - friz-isuct
Дата добавления - 09.12.2019 в 01:47
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запрос QueryTables с yahoo невозможен из-за JavaScript (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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