Страницы: 1
RSS
Ошибка сценария при импорте в Excel с Web страницы
 
Выбираю опцию "Получение внешних данных из интернета", по умолчанию в Excel при импорте сайты открывает IE.
Так вот всё время при заходе на сайт с нужной мне инфой (например cbr.ru или finmarket.ru) вылезают окна с различными "ошибками сценария"!
Например ""ошибка сценария yaCounter5774506" не определено" или сразу несколько ошибок сценария таких как "Объект не поддерживает свойство или метод some",
"Объект не поддерживает свойство или метод querySelector" и.т.д.
Такая же "петрушка" на всех сайтах, при этом просто в IE вне экселя эти сайта без ошибок открываются без всяких проблем.

В итоге импортировать получается только страницу целиком и приходится вручную чистить лишнюю информацию т.е. нельзя стандартным образом выбирать отдельные таблицы\области т.к. не появляются "жёлтые стрелочки" для выбора отдельных объектов страницы.

Все обновления Windows 7\Excel 2013 стоят. Не пойму в чём дело. Погуглил, толком ответов нигде нет.

Эксперты Помогите, пожалуйста!
 
Быть может, вручную через VBA парсить сайт?
There is no knowledge that is not power
 
Увы, VBA, я совсем не знаю во-первых.
Во-вторых есть стандартный функционал, который на нескольких др. компьютерах я видел вполне работающим...
Хотелось бы обойтись без "танцев с бубном"! Мне всего то курсы валют, да котировки иногда подтягивать надо, но в принципе может понадобиться и что то более сложное, поэтому хочу понять в чём причина такого беспредела с импортом :)
 
Если вы постоянно используйте одни и те же сайты, то есть смысл написать свой парсер.
There is no knowledge that is not power
 
Я ж говорю, не владею VBA... :(
 
А пора
There is no knowledge that is not power
 
Цитата
SuperCat написал: А пора
Слушайте, я очень ценю, что для простого СТАНДАРТНОГО импорта данных, который УЖЕ ЗАШИТ в функционале эксель, Вы мне предлагаете писать парсер и изучать VBA, ПОСКОЛЬКУ ПРЯМОГО ОТВЕТА НА МОЙ ВОПРОС ОЧЕВИДНО НЕ ЗНАЕТЕ  :D ... ну так не знаете, хоть не отвечайте  ;)

Уважаемые форумчане, может быть кто нибудь более простое решение знает?!
Не пойму даже где копать... то ли в винде дело, то ли в каких то dll библиотеках, то ли в реестре, то ли в Excel...
 
Ошибки ж ведь только в процессе настройки появляются, — да, неприятно, но это ж один раз надо ОК щелкнуть на всех этих сообщениях.
А потом все работает

Цитата
не появляются "жёлтые стрелочки" для выбора отдельных объектов страницы
наличие желтых стрелок с вероятностью 95% не связано с появлением ошибок
Excel просто понимает только табличную верстку сайта, - а она сейчас редко встречается на сайтах
 
Кнопка цитирования не для ответа [МОДЕРАТОР]

Ок, нажать не проблема, я бы не стал по этому поводу тему создавать и беспокоить людей  :)
Да, но я не так давно своими глазами видел, как эти жёлтые стрелочки появляются при импорте данных у человека на др. компьютере и на том же сайте cbr.ru и отдельные таблицы импортировались без проблем )
Если дело в том, что это сайт НЕ сделан под табличную вёрстку, тогда функционал стандартного импорта считай, что почти бесполезен...
Не могли бы Вы у себя проверить вылезет ли такая же ошибка скрипта при попытке импорта на сайте cbr.ru?
 
Цитата
realalexandro написал:
Не могли бы Вы у себя проверить вылезет ли такая же ошибка
ваш сайт я не проверял, ибо у меня ошибки выскакивают минимум в 99%.
И на всех версиях - win7/10; Officce 2010/13/16
Изменено: Михаил С. - 21.11.2016 20:38:57
 
realalexandro, vba можно и не знать, а вот с макрорекордером можете справится.
Пример записи макрорекордера(далее вставляете кнопку и присваиваете ей этот макрос):
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sub Макрос1()
'
' Макрос1 Макрос
'
 
'
    With ActiveSheet.QueryTables.Add(Connection:="URL;http://cbr.ru", _
        Destination:=Range("$A$1"))
        '.CommandType = 0
        .Name = "cbr.ru"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
 
Забавно, мне ответил Игорь и я его попросил проверить, а теперь Вы мне отвечаете, что "мой сайт не проверяли", поскольку у Вас ошибки при импорте всегда или почти всегда.

Правильно ли я понимаю тогда, что функционал импорта из Web работает в настоящее время только по принципу "Импортируй всю страницу, а потом руками удаляй не нужное", либо "пиши парсер под отдельный сайт"? Т.е. выходит, что текущий формат большинства сайтов по отдельным частям\таблицам встроенный импорт Excel как правило не понимает?

Если это так, то это очень странно, потому что я даже в учебнике не таком старом нашёл вот такой пример, как раз для сайта на котором я пробую импорт:
 
У меня сайт http://cbr.ru/ импортируется (через веб-запрос) без ошибок
(смотрел только главную страницу)
и галочка только одна - страница целиком.

Цитата
даже в учебнике не таком старом нашёл вот такой пример
на это не смотрите.
сайт меняется очень часто.
с виду там все также - а начинка поменялась.
и в окне импорта вместо 20 исходных галочек для выбора таблиц осталась 1-5 галочек
 
Jungl, спасибо за пример! "Воткнуть" его в макрос и запустить у меня ума хватило, хотя сам код понять мне пока сложновато. :)

Может быть я неправильно объяснял, но на самом деле, через стандартный импорт выкачивается полностью вся та же информация т.е. вся главная страница в "цифрах и буквах", что и через Ваш скрипт, просто вначале выскакивает то самое сообщение об ошибке сценария.
Я в том смысле, что в принципе у меня импорт работает, просто не отдельных областей, а всей страницы по адресу сразу!

Я так понимаю через скрипт тоже сложно регулировать какую именно таблицу хотим "подгрузить" с сайта, поскольку, очевидно это зависит от структуры определённой и нужен парсер?!
Тогда нет смысла заморачиваться для моих скромных целей  :sceptic:

В общем вроде бы теперь я начинаю понимать, что проблема моя не в Экселе и не в Виндоусе, а в несовершенстве встроенного импорта, который понимает только "табличную" структуру, которой теперь мало кто пользуется, так ведь?!
 
Игорь, спасибо большое!

Значит Вы были правы! У меня по галочкам то же самое. И импорт то всей страницы проходит без проблем (именно всей, а не отдельных областей).
Ошибка сценария возникает лишь при нажатии в окне импорта кнопки "Пуск", которая по идее ДОЛЖНА БЫЛА БЫ разложить сайт по областям, помеченным стрелочками (также и в учебнике написано).

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

Если я правильно эту идею понял, тогда, конечно, и вопроса больше нет.  :)
 
Цитата
realalexandro написал:
сам код понять мне пока сложновато
я вам пишу, макрорекордером пользуйтесь(и по возможности сравнивайте код, может поймете немного сути импорта).
Этот код импортирует курс:
Сравните с первым вариантом и поймете что к чему.
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub Макрос2()
'
' Макрос2 Макрос
'
 
'
    With ActiveSheet.QueryTables.Add(Connection:="URL;http://cbr.ru", _
        Destination:=Range("$A$1"))
        '.CommandType = 0
        .Name = "cbr.ru"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "3"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub
 
Jungl, в смысле макрорекордером?!
Я им и воспользовался для первого скрипта.
Записал сначала "пустой" макрос, потом внутрь кода в режиме "Разработчик" открыл этот пустой макрос и вставил Ваш код, потом запустил и увидел, что он
делает. Или что то не так я сделал?

Второй вариант обязательно сравню уже непосредственно по изменениям кода, Вам спасибо!
 
Jungl, Здравствуйте!
Не могли бы вы рассказать, как Вы определили что эта таблица 3 (.WebTables = "3"), заранее спасибо.
 
trakt123, здравствуйте!
Данный код формирует макрорекордер, в зависимости о структуры web страницы.
 
Jungl, спасибо за оперативный ответ, только я не понял совсем, совсем нечего :(
Смотрите есть сайт https://cryptowat.ch , хочу получить с него данные для мат. анализа, данные получаю "корявые", да и не всё нужно. Подскажите куда копать.
 
trakt123, по хорошему, такие вещи нужно изучать, писать парсер.
У сайта есть API https://cryptowat.ch/docs/api.
Если не справитесь, делайте заказ в соответствующей теме.
 
здравствуйте!

у меня аналогичный вопрос через несколько лет

раньше скачивал файл вот по этой ссылке


https://www.forexite.com/blog/kotirovki-forex-v-microsoft-excel/

всё работало без проблем само собой, данные обновлялись в режиме реального времени несколько раз в секунду сами собой. Теперь не работает ничего.

ранее пробовал в Excel 2003 c указанного выше сайта cbr.ru тащить данные. Данные - импорт внешних данных - создать web запрос, ввести cbr.ru , выбрать интересующие стрелочки (как я понимаю, выбирающие соответствующие ячейки таблицы на сайте), и тоже всё работало, данные обновлялись сами несколько раз в секунду автоматически.

Сейчас на сайте cbr.ru выложены суточные данные, это не то, чего хотелось бы. Интересующие меня данные есть например на сайте

https://www.mql5.com/en/quotes/overview
если по этой ссылке я пытаюсь аналогичным выше образом сделать обновляющийся файл в excel 2003, в окне для сайта выдается ошибка невозможно загрузить страницу.

если по этой же ссылке я путаюсь аналогичным образом сделать обновляющийся файл в excel 2016 (данные - получение внешних данных - из интернета ...) страница загружается, видна единственная стрелочка, она не выбирается и вообще далее у меня весь excel виснет намертво.

если я использую макрос, приведенный выше, заменяя адрес на  https://www.mql5.com/en/quotes/overview , то данные загружаются секунд 10 - 15, но не обновляются, даже если макрос перезапустить еще раз. А хотелось бы с этой страницы тянуть данные в excel так, чтобы они сами автоматически обновлялись в режиме реального времени.

Подскажите пожалуйста, что не так и как добиться поставленного результата? С страницы  https://www.mql5.com/en/quotes/overview хочу получать данные в режиме реального времени в лист excel. Пофиг как и куда выводится, это сам разберусь, лишь бы данные со всей страницы были

Спасибо
Изменено: Крендель - 12.03.2024 20:31:06
 
уточнение

excel 2016 данные - получение внешних данных - из интернета

https://www.mql5.com/en/quotes/overview

пуск - продолжить выполнение сценария да, сколько нужно раз, в верхнем правом углу параметры - RTF или HTML - Ок, выбрать единственную стрелочку в верхнем левом углу, она превращается в синюю галочку - ок, выбрать ячейку

данные загружаются, но не обновляются. когда синяя галочка уже выбрана, можно зайти в параметры, выбрать "нет", тоже сработает. но данные не обновляются!

как быть?
Страницы: 1
Читают тему
Наверх
Loading...