Потеря кода VBA в «ThisWorkbook» (Private Sub WorkBook_Open ()) - PullRequest
1 голос
/ 12 июня 2011

Первые три элемента фона:

  1. Я создал шаблон Excel, который, в свою очередь, используется для создания «персонализированного шаблона», где имя пользователя, комментарий пользователя и имена путей данных сохраняются.встроены в персонализированный шаблон.
  2. Персонализированный шаблон используется для создания ежемесячных рабочих книг (фактически, табелей рабочего времени)
  3. Шаблон был создан в Office / Excel 2007, работающем под Vistaно (текущей) целевой средой является корпоративная сеть, работающая под управлением Office / Excel 2003 под XP Professional.Поэтому оба шаблона создаются в виде шаблонов Excel 2003 (которые в среде разработки работают в режиме совместимости)

Пока все хорошо - шаблоны хорошо работают в среде разработки - персонализация'Код находится в подпрограмме WorkBook_Open() в разделе "ThisWorkbook" - он запускается, УДАЛЯЕТ САМ и сохраняет как персонализированный шаблон.Оба шаблона имеют «макросы процесса» в коде Sheet1 (принцип здесь заключается в том, что исходный шаблон имеет макросы в «ThisWorkbook» и «Sheet1»; персонализированный шаблон имеет макросы только в «Sheet1», а рабочие книги созданы из персонализированного шаблона.У меня нет MACROS ВСЕ.

В «бета-тестировании» у меня были проблемы с Excel2000 под XP (файловые форматы), и на целевой машине моя подпрограмма WorkBook_Open была удалена в основном шаблоне (а не в персонализированном шаблоне) -хотя в Excel2007 / Vista все работало нормально.

В то время я чувствовал, что неправильное удаление Workbook_Open, вероятно, было ошибкой кодирования, но во время исследования проблем я обнаружил несколько ссылок на «Macafee, удаляющих модули VBA».Я не рассматривал их, но осознавал, что на целевой машине (и в среде) работает Macafee, а на всех моих компьютерах работает Norton.

После перекодирования я успешно повторил следующие действия:

а) Excel 2007 / Vista / Norton
b) Excel 2007 / XP Professional / Norton
c) Excel 2000 / XP Home / Norton

, поэтому было удобно провести повторное тестирование в Excel 2003 / XP Professional / Macafee

На этот раз я наблюдал за этим - так что, опять-таки, увидел, что подпрограмма WorkBook_Open неправильно удалена из основного шаблона - к сожалению, это было всего лишь за несколько минут до того, как ключ памяти USB (с которого запускался шаблон) был полностью уничтожен.

Итак, вопрос (а) - прежде чем снова пройти весь процесс:

  1. Существуют ли какие-либо объективные доказательства того, что Macafee удалил модули VBA с автозапуском?
  2. Если да, есть ли обходной путь (этот шаблон будет использоваться тремя людьми на предприятии из десяти тысяч человек), поэтому я никак не смогу повлиять / изменить политики безопасности !!!:() - если с Macafee возникнут проблемы, мне придется все переосмыслить!

Ответы [ 3 ]

0 голосов
/ 16 июня 2011

Мне снова удалось добраться до клиентского компьютера - и я добавил новый простой шаблон, чтобы доказать или нет мою проблему. Новая подпрограмма WorkBook_Open ...

Private Sub WorkBook_Open()
    MsgBox "Hello World"
    With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, _
        .CountOfLines
    End With
    MsgBox "Goodbye to all that!"
End Sub

... и это работает точно так, как требуется, т. Е. Процедура выполняется, а затем удаляется сама (отображается второе сообщение msgbox, даже если код был удален!

Итак, этот тест делает недействительным мой вопрос - McAfee НЕ удаляет процедуру как часть защиты AV - так что я больше не ищу обходной путь!

Теперь все, что мне нужно сделать, это выяснить, в чем заключается моя проблема!

Спасибо за комментарии

0 голосов
/ 11 июля 2011

JUst в случае, если кто-то еще придет в этот поток - я полностью проверил свой шаблон - и повторно запустил его в целевой среде - и процедура Workbook_Open была снова удалена. покопавшись на целевой машине, я обнаружил журнал событий Macafee, и вот ...
Тип события: Предупреждение
Источник события: McLogEvent
Категория события: нет
Код события: 258
Дата: 09.07.2011
Время: 15: 45: 40
Пользователь: NT AUTHORITY \ SYSTEM
Компьютер: XXXXXXXXXX
Описание: Файл F: \ Timesheets \ Timesheet Generator.xlt \ 1.OLE содержал X97M / Generic Virus . Файл был успешно очищен с помощью Scan Engine версии 5400.1158 DAT версии 6400.0000.

Так что есть окончательное доказательство. То же самое происходит с Workbook_Activate ()

«Оскорбительные» строки выглядят как

With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .DeleteLines 1, _
        .CountOfLines
0 голосов
/ 16 июня 2011

Чтобы ответить на ваш реальный вопрос ... ДА, многие антивирусные программы абсолютно считают код автозапуска, который запускается при открытии документов Excel или Word, небезопасным, и удаляют его, потому что в течение короткого момента десять лет назад это действительно черви работали. Я не знаю, делает ли это, в частности, MacAfee, но я определенно слышал, что это происходит.

...