Страницы: 1
RSS
excel 2016 не работает VBProject, макрос для чтения\вставки макроса
 
Здравствуйте! Столкнулся с такой ситуацией, 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)

Как и вставка тоже.  Подскажите, в чем проблема?

Изменено: raitnax - 17.10.2017 10:44:02
 
Пока что у Вас ошибка в самом макросе. В этой строке:
Код
Y = ActiveWorkbook.VBProject.VBComponents.Item(Y).CodeModule.Lines(1, 5)

в переменной "Y" находится Empty. Вы подставляете Empty сюда: Item(Y). Empty наверное переводится в ноль, но порядковая нумерация в коллекции "VBComponents" начинается с "1".
 
Цитата
Karataev написал:
Item(Y).
Извините, очепятка:-) Можно не переменную, а item(activesheet.name)

перепутал х и у местами.
Изменено: raitnax - 17.10.2017 10:49:13
 
А доверие к VBA проекту проставлено в настройках Excel?
Плюс VBA проект не в курсе ни про какие там ActiveSheet.Name. Внутри проекта используются кодовые имена. Попробуйте так:
Код
ActiveSheet.CodeName
Изменено: The_Prist - 17.10.2017 10:49:51
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
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

По идее - это решение.

Но почему-то оно не срабатывает.  
Изменено: raitnax - 17.10.2017 11:10:18
 
Программным способ нельзя поставить флажок "Доверять доступ к объектной модели проектов VBA". Только в самой программе "Excel" это можно сделать. Это наверное сделано для защиты от злоумышленников.
 
Цитата
Karataev написал:
Программным способ нельзя поставить флажок

Он отрабатывает, когда я открываю путь к этой галочке, она активирована.. Только вот до этого момента она почему-то неактивна:-)(
Может можно как-то с помощью макроса открыть этот путь?
 
Цитата
raitnax написал:
Теперь хочу
Вы не первый и не единственный, но из самого Excel этого не сделать.
Здесь я описывал это более подробно и приводил примеры кодов для VB(не VBA!), которыми можно это сделать:
Что необходимо для внесения изменений в проект VBA(макросы) программно
В Вашем случае можно просто проверять есть ли доступ к проекту и выдавать пользователю сообщение о необходимых действиях, если доступа нет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
Вы не первый и не единственный, но из самого Excel этого не сделать
Да я уже прочитал вашу статью. Спасибо за ответ.

Спасибо всем!
 
raitnax, не понял Вас в посте 7.
Цитата
raitnax написал:
Он отрабатывает, когда я открываю путь к этой галочке
Как Вы открываете путь к этой галочке?
 
Цитата
Karataev написал:
Как Вы открываете путь к этой галочке?
Вручную, когда захожу проверить ее - она нажата
 
У меня этот макрос ставит флажок "Доверять доступ к объектной модели проектов 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 написал:
Может можно как-то с помощью макроса открыть этот путь?
Опишите Ваши действия, когда Вы открываете путь (куда нажимаете).
Изменено: Karataev - 17.10.2017 13:57:30
 
Цитата
Karataev написал:
ставит флажок
Флажок ставит, но на его функционал это не влияет, проверьте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, да, действительно. При этом если закрыть Excel, а затем снова открыть, то флажка нет.
Изменено: Karataev - 17.10.2017 16:46:21
Страницы: 1
Наверх