Выявлены проблемы:
Исходные данные для тестирования
Тест 1. Замена цифровой подписи
Тест 2. Проблемы с загрузкой шаблонов (Test1.doc и Test3.dot)
Тест 3. Проблема с каталогом StartUp
Еще один любопытный вопрос:
Утилита SelfCert.exe позволяет создавать личные сертификаты (электронную подпись для VBA-проектов). Но как можно удалить ненужные сертификаты? Оказывается, для этого нужно использовать IE 5.0:
Исходные данные для тестирования
Тестирование (результаты которого оказались идентичными) проведено на двух ПК:
Исходные данные:
а также:
Для проверки проведенного нами тестирования загрузите наши исходные файлы: Word2000.ZIP, 47 Кб.
Поместите все файлы в отдельный пользовательский каталог, например, в SomeFolder (никак не описанный в Options|File Locations). Кроме того, поместите Test3.dot в каталог, описанный в User Templates (Options|File Locations), и переименуйте его в Test4.dot.
Начинаем работать в среде Word 2000. Установите уровень защиты от макровирусов Средний (Medium) — Tools|Macro|Security.
Тест 1. Замена цифровой подписи
1.1. Откройте Summa2kn.doc, перейдите в VBA, установите для проекта свою цифровую подпись. Закройте документ — появляется сообщение о нехватке места на диске!!!
1.2. Откройте Summa2ks.doc, перейдите в VBA, измените подпись на свою. Закройте документ — появляется сообщение о нехватке места на диске!!!
1.3. Откройте Summa2ks.doc, перейдите в VBA, внесите в код любое исправление (какой-нибудь пробел в строке комментария). Закройте документ — появляется сообщение о нехватке места на диске!!!
Уберите цифровую подпись, закройте документ — операция выполняется безошибочно.
Когда возникает эта ситуация? Оказывается, в случае, когда в коде документа Summa2kX имеется ссылка на OLE-объект, с которым не установлена связь (Tools|Reference):
Dim oPropis As Propis
Представляется, что такое поведение программы является ошибочным:
Тест 2. Проблемы с загрузкой шаблонов (Test1.doc и Test3.dot)
Все шаблоны и документы (если не оговорено иное) открываются с разрешением доступа к макрокомандам.
Открыли Word2000
2.1. Откройте Test3.dot из каталога SomeFolder (команда File|Open). Появится предупреждение о наличии макрокода. Отмените операцию.
Откройте Test4.dot из каталога User Templates. Шаблон загрузится без предупреждения о наличии макрокода!!!
Закройте все документы.
2.2. Откройте новый документ (Doc1.doc). Установите Test3.dot как глобальный шаблон (Tools|Templates and Add-Ins) — он будет подключаться без предупреждения о макрокоде (при использовании шаблона из любого подкаталога). Все макрокоманды — доступны для выполнения.
Уберите все глобальные шаблоны.
2.3. Подключите Test3.dot (из каталога SomeFolder) в качестве шаблона, присоединенного к документу Doc1.doc. Появится сообщение о наличии макрокода. Отмените операции подключения (кнопка Close в диалоговом окне) — но шаблон все равно подключится, хотя макрокоманды будут недоступны.
2.4. Подключите Test4.dot (из каталога User Templates) в качестве шаблона, присоединенного к документу Doc1.doc. Шаблон подключится без сообщения о макрокомандах (они будут доступны). Сообщение не будет выдаваться и при последующих загрузках Doc1.dot.
Вывод: глобальные шаблоны (из любого подкаталога) и любые шаблоны из каталога User Templates, загружаются без проверки на наличие макрокода.
Приводим Word в исходное состояние. Закрываем все документы.
2.5. Открываем Test1.doc. Открываем Test3.dot (просто командой "Открыть"). Переходим в среду VBA. Оба проекта видны в окне Project Explorer, их код доступен, так же как и их макрокоманды.
ВНИМАНИЕ. Переходим в среду Word и закрываем шаблон Test2.dot. Переходим в среду VBA — проект Test1.doc стал недоступным для просмотра и редактирования!!! А его макрокоманды — доступны.
Закрываем все документы Word (Test1.doc).
2.6. Открываем Test1.doc. Переходим в среду VBA. Код и макрокоманды проекта доступны. Возвращаемся в среду Word и сохраняем документ как шаблон (Save As, Dot) в каталог SomeFolder с именем Test1.dot. Закрываем Test1.dot и открываем его заново. Переходим в среду VBA — код Test1.dot становится недоступным!!! Но его макрокоманды доступны. Закрываем Test1.dot.
2.7. Повторяем пункт 2.6 с файлом Test2.doc. Создаем Test2.dot. Тот же результат — код проекта недоступен для просмотра!!
На этом пора остановиться, так как подобные действия с шаблонами уже напоминают какой-то дурдом. Ведь дело в том, что именно на основе копии файла Test2.doc был создан шаблон Test3.dot, с которым мы работали ранее. Но его код проекта все время доступен!!!
Тест 3. Проблема с каталогом StartUp
Каталог StartUp (Tools|Options|File Locations) используется, в частности, для хранения шаблонов, загружаемых при запуске Word. Но...
У меня:
StartUp = c:\Windows\Application Data\Microsoft\Word\StartUp\
а при запуске Word почему-то помимо этих шаблонов загружаются еще и шаблоны из:
f:\off2000\office\StartUp\
Как же это так????