доверять доступ к объектной модели проектов VBA
Модератор: Naeel Maqsudov
Всем привет. Хочу включить "доверять доступ к Visual Basic Project" в Excel 2003 через меню. Надо переключиться с вба в книгу екселя, в которой написан этот макрос, нажать Alt+е (русское), далее а (русское), далее Alt+м (русское), Alt+в (русское), потом 2 раза кнопку OK. Но перед этим нужно проверить стоит ли галочка возле "доверять доступ к Visual Basic Project".
Ребята, помогите, пожалуйста. Обыскал все форумы. Иных способов включить доступ к Visual Basic Project не нашел (параметр реестра AccessVBOM = 1 не подходит, потому что не ставится галочка в ексель возле "доверять доступ к Visual Basic Project").
Ребята, помогите, пожалуйста. Обыскал все форумы. Иных способов включить доступ к Visual Basic Project не нашел (параметр реестра AccessVBOM = 1 не подходит, потому что не ставится галочка в ексель возле "доверять доступ к Visual Basic Project").
jaroslav, Стесняюсь спросить, а где в XL2003 Вы вообче нашли "доверять доступ к объектной модели проектов VBA" ?
Может быть речь идёт о меню Сервис пункт Макрос команда Безопасность, закладка Надежные источники и "флажок" Доверять доступ к Visual Basic Project
Может быть речь идёт о меню Сервис пункт Макрос команда Безопасность, закладка Надежные источники и "флажок" Доверять доступ к Visual Basic Project
Да, pashulka, Вы правы. Я ошыбся
Дык, если нужно изменить значение параметра через меню, то чем Вас не устраивает предложенный мною способ ? Если слишком много операций, то команду Безопасность можно перетащить/скопировать на какую нибудь панель инструментов, например, Строка меню листа.
Пишу программу на вба, которая будет включатся на 100 разных компьютерах. Хотел бы, чтобы по завершении работы этой программы все макросы из активной книги были удалены. Если на этих компах не будет стоять флажок "Доверять доступ к Visual Basic Project", я не смогу удалить все макросы из активной книги.
Теперь всё стало гораздо понятнее
что касается решения, то если макросы являются Вашей собственностью и все они должны располагаться в стандартных модулях , то в таком случае их можно удалить и без соответствующей галочки, если же книга "замусорена" всевозможными диалоговыми окнами, модулями классов, то можно просто удалить всю книгу, т.е.

Код: Выделить всё
Private Sub Test()
With ThisWorkbook
.ChangeFileAccess Mode:=xlReadOnly
Kill PathName:=.FullName
.Close saveChanges:=False
End With
End Sub
У меня есть такой код:
Книгу удалять нельзя. В ней есть результаты работы программы. В этой книге есть макрос Auto_open в ЭтаКнига и 2 модуля, в 1 из них расположен вышенаведенный макрос. Подскажите, пожалуйста, как в таком случае удалить все макросы из книги. Проблема в том, что я не могу воспользоваться этим макросом без флажка "Доверять доступ к Visual Basic Project"
Код: Выделить всё
Sub Delete_Macroses()
Dim oVBComponent As Object, lCountLines As Long
'Проверяем, защищен проект или нет
If ActiveWorkbook.VBProject.Protection = 1 Then
MsgBox "VBProject выбранной книги защищён." & vbCrLf & _
" Компоненты не будут удалены.", vbExclamation, "Отмена выполнения"
Exit Sub
End If
For Each oVBComponent In ActiveWorkbook.VBProject.VBComponents
On Error Resume Next
With oVBComponent
Select Case .Type
Case 1 'Модули
.Collection.Remove oVBComponent
Case 2 'Модули Класса
.Collection.Remove oVBComponent
Case 3 'Формы
.Collection.Remove oVBComponent
Case 100 'ЭтаКнига, Листы
lCountLines = .CodeModule.CountOfLines
.CodeModule.DeleteLines 1, lCountLines
End Select
End With
Next
Set oVBComponent = Nothing
End Sub
Макрос Auto_Open должен располагаться в стандартном модуле, в этом случае, его можно будет удалить.
Если же речь идёт о модуле книги ThisWorkbook(ЭтаКнига) и, соответственно, событии Workbook_Open(), то метод удаления модулей, в этом случае, в принципе работать не будет.
Если же речь идёт о модуле книги ThisWorkbook(ЭтаКнига) и, соответственно, событии Workbook_Open(), то метод удаления модулей, в этом случае, в принципе работать не будет.
У меня действительно прописано Workbook_Open в ЭтаКнига. Какие возможные способы решение этой проблемы?
Заменить событие Workbook_Open на макрос Auto_Open и воспользоваться следующим советом.
Или вывести результаты работы программы в другую рабочую книгу (созданную программно), а рабочую книгу, содержащую макросы, удалить вышеопубликованным способом.
P.S. Необходимо всё же уточнить, что удаление модулей, мягко говоря, слабо связано с защитой программы, ибо любой, кто получит Вашу книгу, сможет сделать копию (до первого открытия) и при возникновении интереса, просто откроет копию (например, отключив макросы) и доберется до модулей (даже при наличии защиты VBProject)
Или вывести результаты работы программы в другую рабочую книгу (созданную программно), а рабочую книгу, содержащую макросы, удалить вышеопубликованным способом.
P.S. Необходимо всё же уточнить, что удаление модулей, мягко говоря, слабо связано с защитой программы, ибо любой, кто получит Вашу книгу, сможет сделать копию (до первого открытия) и при возникновении интереса, просто откроет копию (например, отключив макросы) и доберется до модулей (даже при наличии защиты VBProject)