Шрифт:
Именно на таком принципе работает механизм шифрования PGP.
ОТВЕТЫ НА ВОПРОСЫ
Эта книга написана по мотивам цикла статей "Начала программирования на VBA", публиковавшегося в журнале "Мир ПК" в 2000–2001 годы. После публикации статей цикла мне пришло немало писем с различными вопросами о программировании. Ниже представлены ответы на наиболее интересные из них.
1.
"В документе я хочу защитить от изменений пользователем только рисунок. Могу ли я это сделать? Метод Protect, похоже, этого сделать не дает".
Нет. Microsoft Word делать это не позволяет.
Впрочем, можно пойти на хитрость. Создайте документ Doc1.doc и вставьте в него рисунок. Затем сохраните документ с рисунком, задав ему пароли на открытие и на изменения. Создайте документ Doc2.doc. В том месте, где должен быть рисунок, вызовите окно Вставка-Обьект-Создание из файла и укажите в пути файл doc1.doc, отметив предварительно пункт "Связь с файлом". Введите пароль на открытие — и рисунок в Вашем документе. Сохраните его.
Теперь при открытии файла doc2.doc рисунок будет виден, но при попытке изменить его будет запрашиваться пароль на открытие файла doc1.doc. Проблема остается в том, что оба файла — и с рисунком, и с текстом — должны присутствовать, причем в тех местах, где они были изначально. То есть вся эта конструкция труднопереносима.
2.
"Возможно ли в "Word, проводить сравнение двух документов по словам."
Да, разумеется. Откройте один из сравниваемых документов, выберите пункт меню "Сервис"-"Исправления"-"Сравнить версии" и выберите в открывшемся диалоговом окне второй файл для сравнения. Все разночтения будут выделены, в зависимости от их характера — зачеркиванием, цветом и др.
3.
"Как можно узнать количество страниц в Word2000 из макроса?"
С помощью команды
р = ActiveDocument.ComputeStatistics(wdStatisticPages)
где в переменную р запишется количество страниц в активном документе.
4.
"Сделал документацию на свою VBA-программу в "Word. 97 в doc-файле. Включил в нее screenshot 'ы, на которые наложил автофигуры "Word — выноски, стрелки, скобки, надписи и проч., что разъясняло бы назначение частей рисунков. Теперь хочется поставлять документацию в формате HTML, но. при конвертации "Word начисто игнорирует свои же автофигуры, оставляя в итоговых gif-файлах чистый рисунок. Как цивилизовано выйти из ситуации?"
Да, автофигуры Word97 при конвертации в HTML игнорируются. Для реализации желаемой Вами задачи выделите все автофигуры рисунка вместе с самим рисунком (инструментом "Выделение объектов" панели "Рисование"), сгруппируйте их, вырежьте в Буфер обмена, а затем вставьте то, что в буфере, на то место, где был исходный рисунок, с помощью команды "Правка"-"Специальная вставка", используя в качестве формата вставляемого изображения "Точечный рисунок" или "Метафайл Windows", т. е. что угодно, кроме "рисунка MS Office". После этого у Вас в документе появится рисунок с всеми вставленными автофигурами, который, однако, спокойно конвертируется в GIF-формат при конвертации всего документа в HTML. Так следует поступить со всеми рисунками в документе. В Word2000 и Word2002 такой проблемы нет — там автофигуры сохраняются в самой генерируемой web-странице, но при просмотре ее в старых браузерах могут быть не видны.
5.
"Можно ли "Word 2000 убрать автоматический запуск панели "Буфер обмена"?"
Вообще говоря, там встроен "интеллектуальный" механизм, который больше не отображает панель после того, как пользователь ее закроет несколько раз. Сделать так, как Вы желаете, можно, если использовать макросы.
Макрос для полного скрытия панели:
Sub clipboard_hide
CommandBars("Clipboard").Enabled = False
End Sub
Макрос для показа панели:
Sub clipboard_show
CommandBars("Clipboard").Enabled = True
CommandBars("Clipboard").Visible = True
End Sub
К счастью, в Word ХР эта рекомендация уже неактуальна — там Область задач с вкладкой "Буфер обмена" вызывается только тогда, когда дважды нажата комбинация клавиш Ctrl+C.
6.
"Как определить с помощью макроса в документе "Word, текущий номер страницы, где произошло при поиске вхождение заданной подстроки."
Существуют функции Selection.Information(wdActiveEndPageNumber), которая возвращает номер страницы по счету, на которой располагается конец выделения, и функция Selection.Information(wdActiveEndAdjustedPageNumber), которая возвращает присвоенный номер страницы, на которой располагается выделенный фрагмент. Вторую функцию следует использовать тогда, когда необходимо получить тот номер страницы, который указан на ней непосредственно (т. е. с учетом ручных установок нумерации), а первую — если номер необходим абсолютный. Описание обеих команд можно получить в Справке VBA по слову Information.