Здравствуйте! Столкнулся с такой ситуацией, excel 2016 не реагирует на такие вещи
Код
Sub test()
Z="test"
X = ActiveSheet.Name
Y = ActiveWorkbook.VBProject.VBComponents.Item(X).CodeModule.Lines(1, 5)
ActiveWorkbook.VBProject.VBComponents.Item(X).CodeModule.InsertLines 1, Z
End Sub
Предыдущие версии Excel срабатывают и считывают информацию. Здесь же не работает ActiveWorkbook.VBProject.VBComponents.Item(Y).CodeModule.Lines(1, 5)
Пока что у Вас ошибка в самом макросе. В этой строке:
Код
Y = ActiveWorkbook.VBProject.VBComponents.Item(Y).CodeModule.Lines(1, 5)
в переменной "Y" находится Empty. Вы подставляете Empty сюда: Item(Y). Empty наверное переводится в ноль, но порядковая нумерация в коллекции "VBComponents" начинается с "1".
А доверие к VBA проекту проставлено в настройках Excel? Плюс VBA проект не в курсе ни про какие там ActiveSheet.Name. Внутри проекта используются кодовые имена. Попробуйте так:
The_Prist написал: А доверие к VBA проекту проставлено в настройках Excel?
Да спасибо. Пока что проблема в этом. Теперь хочу с помощью макроса проставлять это в excel'е
Sub Enable_AccessVBOM() On Error Resume Next Key$ = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _ "\Excel\Security\AccessVBOM" CreateObject("WScript.Shell").RegWrite Key$, 1, "REG_DWORD" End Sub
Программным способ нельзя поставить флажок "Доверять доступ к объектной модели проектов VBA". Только в самой программе "Excel" это можно сделать. Это наверное сделано для защиты от злоумышленников.
Karataev написал: Программным способ нельзя поставить флажок
Он отрабатывает, когда я открываю путь к этой галочке, она активирована.. Только вот до этого момента она почему-то неактивна:-)( Может можно как-то с помощью макроса открыть этот путь?
Вы не первый и не единственный, но из самого Excel этого не сделать. Здесь я описывал это более подробно и приводил примеры кодов для VB(не VBA!), которыми можно это сделать: Что необходимо для внесения изменений в проект VBA(макросы) программно В Вашем случае можно просто проверять есть ли доступ к проекту и выдавать пользователю сообщение о необходимых действиях, если доступа нет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
У меня этот макрос ставит флажок "Доверять доступ к объектной модели проектов VBA" в "Excel 2016":
Код
Sub Enable_AccessVBOM()
Dim key As String
key = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application.Version & _
"\Excel\Security\AccessVBOM"
CreateObject("WScript.Shell").RegWrite key$, 1, "REG_DWORD"
End Sub
Мне казалось, что вроде раньше не ставился этот флажок или я что-то путаю.
Цитата
raitnax написал: Может можно как-то с помощью макроса открыть этот путь?
Опишите Ваши действия, когда Вы открываете путь (куда нажимаете).