Страницы: 1
RSS
Как изменить текст модулей VisualBasic в нескольких сотнях файлов
 
Уважаемые коллеги!  
 
Прошу помощи в следующей проблеме. Имеется несколько сотен файлов Excel'03, которые разложены по разным папкам. Это результат работы нескольких людей над огромным количеством проектов (не IT) более чем за год. В каждом из этих файлов есть код на VisualBasic, который для нас стал "вредоносным".    
 
Подскажите, пожалуйста, как можно не открывая все файлы закомментировать или отредактировать несколько строк кода. Насколько я понимаю, для этого может подойти VBScript. Сам я ни разу с этим не сталкивался, и если приведёте пример как найти все файлы с определёнными именами и изменить код в них я буду благодарен.
 
Не открывая не получится.  
Что за "вредоносный" код?
 
Я потому и заключил в кавычки, что это код-козявка, которую вставил исполнитель в исходный файл-шаблон.    
Там вызов трех процедур на открытии книги. В процедурах происходит сравнение текущей даты с неким заложенным значением. Вредоносность кода состоит в том, что он удаляет несколько листов в книге.  
Открывать файл не проблема, можно переставить системную дату.  
Нужно закомментировать вызовы этих процедур и поправить текст кода в ещё одной точке.
 
А покажите пример такого файла.  
 
И какая у вас версия Excel?  
Если 2007 и новее - то проблема удаления всех макросов решается просто.  
 
PS: Обычно такой код ставят, чтобы разработчику защититься от неоплаты разработанной им программы.  
 
Поэтому с кодом поможем, только когда убедимся, что это не защита разработчика  
(вдруг вы заказали программу, и не оплатили её)
 
В наличии рабочие машины с 2007 и 2010 офисом.  
 
Это не заказная работа, а результат планомерной работы коллектива. Исполнитель-программист на момент реализации проекта состоял в штате компании на постоянной основе. После введения в эксплуатацию данного проекта ему была поставлена новая задача и он более 5-ти месяцев работал в другом направлении. Но оказался очень своеобразной личностью. Мы расстались, а тут появились такие непасхальные яйца.  
 
Могу ли я привести только код-вставку? Или только листинг макросов? Мне очень интересно как вы собираетесь оценивать что мы заказывали и как оплатили?
 
Tormozz, вполне допускаю что "программист" оказался очень своеобразным, но не факт что и Вы были все время белые и пушистые...:(  
Для справки, формат xlsx не поддерживает макросы.
 
{quote}{login=Tormozz}{date=10.09.2012 06:51}{thema=}{post}Мне очень интересно как вы собираетесь оценивать что мы заказывали и как оплатили?{/post}{/quote}У нас длинные руки.
 
Не знаю, ребят. ИМХО форум может выступить в роли третейского судьи только в том случае, если один из форумчан является участником спора и может ответить на претензию. А так я могу и Майкрософт огульно обвинить в неправильном деловом поведении.  
>> Исполнитель-программист на момент реализации проекта состоял в штате компании на постоянной основе  
С ним и надо решать. Мало ли как там все было... Поддерживаю Igor67.
Я сам - дурнее всякого примера! ...
 
{quote}{login=KukLP}{date=10.09.2012 07:17}{thema=}{post}  
>> Исполнитель-программист на момент реализации проекта состоял в штате компании на постоянной основе  
С ним и надо решать. Мало ли как там все было... Поддерживаю Igor67.{/post}{/quote}  
C ним мне мне ничего решать не надо, т.к. это его принимали для передачи части моих функций, а не меня поставили на его место. У него был полный карт-бланш. Результатом были довольны все. С моей точки зрения (а я знаю очень многое в компании, хотя являюсь таким же наемным рабочим) выглядит это как "закладка" для шантажа. И я не просил здесь никого помочь мне найти "вредный код". Я уже нашел все, что мне нужно до обращения сюда. Осталось только найти способ решить как устранить данную проблему в нескольких сотнях файлов. Буду искать.  
 
Надеялся, что найду здесь помощь специалистов по VBScript. Ошибся с выбором легенды. Что ж каждый учится на ошибках...
 
Ошибся/не ошибся - Вам решать, но как Вам можно помочь, не видя файла?
 
Тут есть всё:  http://www.msoffice.nm.ru/faq/macros.htm Изучайте.
 
Оттуда:  
Для того, чтобы заменить одну строку программы на другую, достаточно использовать следующий пример:    
ActiveWorkbook.VBProject.VBComponents(1).CodeModule.ReplaceLine 1, "Private Sub Workbook_Activate()"  
В данном примере предполагается, что замена будет осуществляться в модуле с индексом(номером) один активной рабочей книги, где первая строка, которая и подлежит замене, содержит имя события, например, Private Sub Workbook_Open()
 
Спасибо, большое за советы.  
 
А по поводу обхода папок и отбора файлов на что обратить внимание?  
 
К сожалению реального времени крайне мало. Завтра меня госпитализируют с воспалением легких.  
 
Если еще найдутся желающие, я присоединил файл. Там закомментированы вызовы в Workbook.Open, ну и сами процедуры закомментированы.  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
 
Прошу прощения за размер
 
Файл утоптал.
Страницы: 1
Читают тему
Наверх
Loading...