Страницы: 1
RSS
Удалить все макросы с другого файла
 
Добрый день!  
Может у кого есть такой макрос, который удалит макросы с другого файла эксель (или файлов находящихся в одной папке). Если такое возможно, то поделитесь пожалуйста. Спасибо.  
 
З.Ы. В поиске и приемах такого не нашел.
 
А у вас доступа к ним нет что ли?  
Безопасность - запретить, не доверять...
 
Sub UpGrade() 'убивает все модули в ЭТОЙ ЖЕ книге  
  Dim VBP As VBProject, Dim VBC As VBComponent  
       
  Set VBP = ThisWorkbook.VBProject ' проект этой книги!!!  
  For Each VBC In VBP.VBComponents  
     If VBC.Type = 1 Or VBC.Type = 3 Then VBP.VBComponents.Remove VBC  
  Next VBC  
End Sub  
 
Что бы всё это работало нужно поставить галочку:  
1) Office 2003 - Параметры\Безопасность\кнопка "Безопасность макросов", закладка "Надежные издатели" ---> Доверять доступ к VBP;  
2) Office 2007 - Параметры Excel\Центр упр-ния безопасностью\кнопка "Параметры..."\Параметры макросов ---> Доверять доступ к объектной модели...
 
{quote}{login=Z}{date=19.11.2008 12:19}{thema=}{post}А у вас доступа к ним нет что ли?  
Безопасность - запретить, не доверять...{/post}{/quote}  
Доступ есть. Просто файлов много и вручную удалять напряжно. А удалять нужно, т.к. пользователи, которым в конечном итоге эти файлы предназначаются, в макросах не соображают и могут наворотить непоправимых дел. А запретить через безопасность невозможно, потомучто это следует делать на каждой конкретной машине вручную, куда мне по объективным причинам не добраться. (Да и работает там разный народ - кто с макросами, кто без).
 
{quote}{login=аналитик}{date=19.11.2008 12:47}{thema=}{post}Sub UpGrade() 'убивает все модули в ЭТОЙ ЖЕ книге  
  Dim VBP As VBProject, Dim VBC As VBComponent  
       
  Set VBP = ThisWorkbook.VBProject ' проект этой книги!!!  
  For Each VBC In VBP.VBComponents  
     If VBC.Type = 1 Or VBC.Type = 3 Then VBP.VBComponents.Remove VBC  
  Next VBC  
End Sub  
 
Что бы всё это работало нужно поставить галочку:  
1) Office 2003 - Параметры\Безопасность\кнопка "Безопасность макросов", закладка "Надежные издатели" ---> Доверять доступ к VBP;  
2) Office 2007 - Параметры Excel\Центр упр-ния безопасностью\кнопка "Параметры..."\Параметры макросов ---> Доверять доступ к объектной модели...{/post}{/quote}  
Спасибо, правда строку Dim VBP As VBProject, Dim VBC As VBComponent пришлось закомментировать (красным высветилась). А как бы поудалять не только модули, но и макросы с листов и книги?
 
Строка красная из-за того, что там второй раз Dim прописан...  
По поводу листов с макросами - с этим реликтом не работал, но м.б.:  
 
Application.DisplayAlerts = False  
For each Sht in Sheets  
if Sht.Type=... Then Sht.Delete  
...  
...  
Application.DisplayAlerts = True
 
{quote}{login=Горбунков}{date=19.11.2008 12:55}{thema=Re: }{post}{quote}{login=аналитик}{date=19.11.2008 12:47}{thema=}{post}Sub UpGrade() 'убивает все модули в ЭТОЙ ЖЕ книге  
  Dim VBP As VBProject, Dim VBC As VBComponent  
       
  Set VBP = ThisWorkbook.VBProject ' проект этой книги!!!  
  For Each VBC In VBP.VBComponents  
     If VBC.Type = 1 Or VBC.Type = 3 Then VBP.VBComponents.Remove VBC  
  Next VBC  
End Sub  
 
Что бы всё это работало нужно поставить галочку:  
1) Office 2003 - Параметры\Безопасность\кнопка "Безопасность макросов", закладка "Надежные издатели" ---> Доверять доступ к VBP;  
2) Office 2007 - Параметры Excel\Центр упр-ния безопасностью\кнопка "Параметры..."\Параметры макросов ---> Доверять доступ к объектной модели...{/post}{/quote}  
Спасибо, правда строку Dim VBP As VBProject, Dim VBC As VBComponent пришлось закомментировать (красным высветилась). А как бы поудалять не только модули, но и макросы с листов и книги?{/post}{/quote}  
 
Для того, чтобы удалить из текущей рабочей книги все модули,а также UserForm, а также программный код из всех модулей листа и книги(VBProject не должен быть защищён)  
Private Sub DeleteModulesAndCode()  
   For Each iVBComponent In ThisWorkbook.VBProject.VBComponents  
       With iVBComponent  
            Select Case .Type  
                Case 1 To 3: .Collection.Remove iVBComponent  
                Case 100: .CodeModule.DeleteLines _  
                1, .CodeModule.CountOfLines  
            End Select  
       End With  
   Next  
End Sub  
 
Естественно книгу можно указать любую.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
О-о-о! Этот код прекрасен:  
 
Private Sub DeleteModulesAndCode()  
For Each iVBComponent In ThisWorkbook.VBProject.VBComponents  
With iVBComponent  
Select Case .Type  
Case 1 To 3: .Collection.Remove iVBComponent  
Case 100: .CodeModule.DeleteLines _  
1, .CodeModule.CountOfLines  
End Select  
End With  
Next  
End Sub  
 
Спасибо всем.  
Попробую поколдовать как удалить макросы с нескольких файлов одновременно (естественно незащищенных). Если удастся, выложу окончательный результат: вдруг кому пригодиться.
Страницы: 1
Наверх