Страницы: 1
RSS
Как удалить все комментарии из всех модулей
 
Подскажите пожалуйста кто знает код для удаления всех комментариев из всех модулей.
 
По-моему в этой программе (VBACodeCleaner v.5.0.28) есть такая возможность. См. приложение
 
VBA Code Cleaner  
 
Вот ссылка на файл http://www.appspro.com/Downloads/CodeCleaner.exe  
 
со страницы http://www.appspro.com/Utilities/CodeCleaner.htm
 
Спасибо, The_Prist. Мудреная штука этот Code Cleaner. Хотелось бы код, типа: для каждого модуля в этой книге - для каждой строки в модуле - если амперсанд - все остальное в строке удалить. Может подскажете?
 
Там, на сколько я понял, выгружаются модули (Export в текстовый файл), затем там удаляется всю ненужное и импортируются обратно в проект (Import Module)
 
да там выгружается модуль и загружается обратно, но это имеет отношение к другой теме - эти процедуры можно ручками сделать по окончании проекта, чтоб весил поменьше, мне б комменты все чтоб руками не удалять..., и голову не ломать :), знает же кто-нибудь, подскажите
 
Кстати, по поводу всех модулей в книге и т.д. можете посмотреть примеры работы с ними вот тут http://www.msoffice.nm.ru/faq/macros/module.htm  
 
вот один пример от туда, как удалить все модули, все формы, все модули класса из проекта  
 
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  
 
переделайте под свои нужды )
 
опа, нашел, когда загуглил "delete all comments vba"  
для офиса 2007:  
ActiveWorkbook.RemoveDocumentInformation (xlRDIComments)  
для офиса 2003:  
Dim wks As Worksheet  
Dim cmnt As Comment  
For Each wks In ActiveWorkbook.Sheets  
For Each cmnt In wks.Comments  
cmnt.Delete  
Next cmnt  
Next  
 
правда не проверил еще...
 
косяк, это не то  
спасибо за ссылку на nm
 
Ура-а-а-а! Заработало!  
Код:  
Dim n               As Long  
   Dim i               As Long  
   Dim j               As Long  
   Dim k               As Long  
   Dim l               As Long  
   Dim LineText        As String  
   Dim ExitString      As String  
   Dim Quotes          As Long  
   Dim q               As Long  
   Dim StartPos        As Long  
       
   For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count  
       With ActiveWorkbook.VBProject.VBComponents(i).CodeModule  
           For j = .CountOfLines To 1 Step -1  
               LineText = Trim(.Lines(j, 1))  
               If LineText = "ExitString = " & _  
               """" & "Ignore Comments In This Module" & """" Then  
                   Exit For  
               End If  
               StartPos = 1  
Retry:  
               n = InStr(StartPos, LineText, "'")  
               q = InStr(StartPos, LineText, """")  
               Quotes = 0  
               If q < n Then  
                   For l = 1 To n  
                       If Mid(LineText, l, 1) = """" Then  
                           Quotes = Quotes + 1  
                       End If  
                   Next l  
               End If  
               If Quotes = Application.WorksheetFunction.Odd(Quotes) Then  
                   StartPos = n + 1  
GoTo Retry:  
               Else  
                   Select Case n  
                   Case Is = 0  
                   Case Is = 1  
                       .DeleteLines j, 1  
                   Case Is > 1  
                       .ReplaceLine j, Left(LineText, n - 1)  
                   End Select  
               End If  
           Next j  
       End With  
   Next i  
       
   ExitString = "Ignore Comments In This Module"  
 
В офисе 2007 в параметрах безопасности поставить галочку "Доверять доступ к объектной модели проектов VBA"
 
Почему интересовала тема: на работе все несколько лет пользуются моими подпрограммами, сейчас настала эпоха перемен, на всякий случай решил поудалять все комменты из модулей (все очень подробно закомментировано - для себя) - наиболее гуманный способ подстраховаться :). Спасибо всем за помощь :)
 
хитрый какой) надо взять на заметку)
 
{quote}{login=Dophin}{date=15.02.2010 01:41}{thema=}{post}хитрый какой) надо взять на заметку){/post}{/quote}  
На заметку всем разработчикам на VBA!  
Сделали приложение - копирнули (или экспортировали модули) - создали новый модуль - копирнули этот код - запустили (по желанию подрихтовали - я как нашел - попробовал - сразу выложил сюда - да и давно к VBA не подходил)- удалили модуль с кодом - выложили приложение на общак :).  
Почему запостил тему на этом ресурсе: сам бывало брал готовые решения с этого сайта. Хороший ресурс. Много вкусного :)  
Ставить пароль на VBA-проект смысла нет - ломается легко программой Office Password Recovery (сам местный PLEX ломал, когда интересовали исходники некоторых интересных решений).  
Удачи всем VBA-кодерам :)
 
paw, эх, мы к вам всей душой, а вы Plex ломали. Как вам не стыдно! )
 
в оффисе 2003 тоже галочку следует поставить "Доверять доступ к объектной модели проектов VBA" или типа того, прото у меня прилады подписаны (мания величия...), если не подписаны, то на эти параметры безопасноти внимание не обратите. Полагаю эта тема могла бы найти место на вкладочке "Приемы", админам на заметку ;)
 
Админы! В копилку идей код слабо положить? Мания величия не отпускает :)). Концептуальная штука, жизненная. Может пригодится кому. Коммент про ломалку офисных вещей лишний. Некрасиво. Сорьки
 
{quote}{login=paw}{date=15.02.2010 01:35}{thema=}{post}Почему интересовала тема: на работе все несколько лет пользуются моими подпрограммами, сейчас настала эпоха перемен, на всякий случай решил поудалять все комменты из модулей (все очень подробно закомментировано - для себя) - наиболее гуманный способ подстраховаться :). Спасибо всем за помощь :){/post}{/quote}  
 
Вы лучше в случайном порядке поменяйте все комментарии местами, тогда точно от вас не останут :)
 
Sameer, извините не догнал Ваш коммент, недалёк...  
The_Prist это не просьба, предложение, на Ваше усмотрение конечно, приятно думать что публике поможет, помогает - проверено :). "Мания величия" - это ж стёб, над собой :)  
Sameer, Excel тоже люблю ;)
 
Объясните тупому, куда этот код класть? Как с ним работать?  
В стандартном модуле пробовал - никакого эффекта. Все комментарии на месте.  
А в последнее время на работе обстановка такая, что в пору начинать подготовку к стиранию комментариев (а я их писал много и подробно чтобы потом самому легче было разбираться)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Alex_ST}{date=04.03.2010 04:51}{thema=}{post}Объясните тупому, куда этот код класть? Как с ним работать?  
В стандартном модуле пробовал - никакого эффекта. Все комментарии на месте.  
А в последнее время на работе обстановка такая, что в пору начинать подготовку к стиранию комментариев (а я их писал много и подробно чтобы потом самому легче было разбираться){/post}{/quote}  
Я проверил, работает.  
Положил в стандартный модуль и    
"в оффисе 2003 тоже галочку следует поставить "Доверять доступ к объектной модели проектов VBA""
 
Уважаемые форумчане! Админы в частности :). Предлагаю конкурс (кто пабедит - маладец :)). Кто вкуснее закомментит этот код. Не я изображал - тупо скопипастил - но публике охота выяснить че к чему :))
 
а в ответ тишина, час-другой времени потратить - подрихтовать - прочувствовать этот код - и он твой - в лучших традициях "русского" кодинга :), понесло мя , где тута у вас флудят ? :))
Страницы: 1
Читают тему
Наверх