Показать полную графическую версию : [решено] Старый excel макрос не работает в Office16
For_Sites@twitter
25-09-2017, 13:46
Установили новый офис и как оказалось, экселевский макрос который успешно работал в 2010 офисе, не работает в 2016.
При запуске, ругается на устаревший синтаксис vba кода. Переделывать огромный макрос нет ни сил, ни желания.
Пробовал установить библиотеки MS Excel 14 Object library, не получилось (установить их). Win 10, 64 bit, Office 2016
Прошу помощи.
экселевский макрос который успешно работал в 2007 офисе »
Приведите код макроса. Приложите исходные данные, на которых он работал (Рабочую книгу и т.п.).
При запуске, ругается на устаревший синтаксис vba кода. »
Как именно ругается?
Переделывать огромный макрос нет ни сил, ни желания. »
А если придётся?
For_Sites@twitter
25-09-2017, 14:49
выдает ошибку компиляции:
Error 'Compile Error: User-defined type not defined'
(см первый скрин)
и подсвечивает
Dim XMLHttp As New MSXML2.XMLHttp
меняю вышеуказанную строку на
Dim XMLHttp As Object
Set XMLHttp = CreateObject("MSXML2.XMLHttp")
то уже ругается на следующую строку (см второй скрин)
ну и т.д.
Я так понимаю что некие методы в офисе 2016 то ли устарели, то ли отключены (по разным причинам) и поэтому мне придется адаптировать код под новые библиотеки. Но мне проще подцепить старую бибилиотеку и работать с ней, но в 16-м офисе. (ну или если есть автокомпилятор, то готов засунуть код туда)
Я так понимаю что некие методы в офисе 2016 то ли устарели, то ли отключены (по разным причинам) и поэтому мне придется адаптировать код под новые библиотеки. Но мне проще подцепить старую бибилиотеку и работать с ней, но в 16-м офисе. (ну или если есть автокомпилятор, то готов засунуть код туда) »
В 2010 ровно так же по умолчанию библиотеки отключены, и выдаются ровно те же ошибки.
Попробуйте в меню VBA редактора tools→references подключить Microsoft XML, v.6.0 , у меня на Windows 7 лежало в "C:\Windows\System32\msxml6.dll".
Судя по поиску - вам нужна эта библиотека, у меня по крайней мере на ваш кусочек кода теперь не ругается.
For_Sites@twitter, вижу три варианта: отсутствует библиотека и/или её регистрация в системе, в коде модуля отсутствует ссылка на библиотеку, разрядность библиотеки не соответствует разрядности приложения (вот в этом я не уверен, может быть сие и не столь критично).
For_Sites@twitter
25-09-2017, 16:06
a_axe,
эта бибилиотека включена у меня. скрины приложил
Iska,
перерегистрация вышеупомянутой dll не помогла. ошибка все та же. прошлая система была тоже 64 разрядная но office14, вес работало. + и без ссылки на библиотеку в коде модуля.
+ и без ссылки на библиотеку в коде модуля. »
Без ссылки раннее связывание:
Dim XMLHttp As New MSXML2.XMLHttp
работать в принципе не может. Позднее:
меняю вышеуказанную строку на
Dim XMLHttp As Object
Set XMLHttp = CreateObject("MSXML2.XMLHttp") »
может. Но опять же — Вы не можете тут же ниже пытаться пользовать всё то же раннее связывание из той же библиотеки в виде «…As New DomDocument».
Лучше просто добавьте ссылку на библиотеку в проект VBA.
Methodichka
26-09-2017, 06:44
Думаю, какие-то проблемы с установкой или отстуствием компонентов. Можно попробовать .NET Framework переустановить, MSXML в него тоже входит.
For_Sites@twitter
26-09-2017, 11:54
сегодня завтра проверю, отпишусь обязательно.
готово:
1. скопировал из рабочей 32 битной системы msxml6.dll
2. зарегал через regsrv32
3. зареференсил в макросе
заработало. Всем спасибо за советы
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC