CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Универсальный штемпель

Геннадий ТИХОМИРОВ telewons@ambernet.kiev.ua

Творческая мысль начальника не ограничилась, конечно, исключительно административной стороной дела. Как человек широких взглядов, он не мог обойти вопросов текущей политики. И он заказал прекрасный универсальный штамп, над текстом которого трудился несколько дней. Это была дивная резиновая мысль, которую Полыхаев мог приспособить к любому случаю жизни. Помимо того, что она давала возможность немедленно откликаться на события, она также освобождала его от необходимости каждый раз мучительно думать. Штамп был построен так удобно, что достаточно было лишь заполнить оставленный в нем промежуток, чтобы получилась злободневная резолюция…
Илья Ильф и Евгений Петров.
«Золотой теленок»

Уверен, если бы геркулесовский начальник Полыхаев, под началом которого служил небезызвестный Александр Иванович Корейко, жил в наши дни, то наверняка бы его творческая мысль не обошла бы стороной шаблоны документов MS Word.

Вместо предисловия

У многих руководителей понятие о владении ПК ассоциируется с умением набирать тексты в Word’е и выводить их на принтер , ,благо на сегодняшний день этот текстовый процессор занял доминирующее положение в подготовке офисных документов :-). И это произошло неслучайно — простота, удобство, огромные возможности сделали Word повсеместно популярным текстовым процессором. В данной статье я попытаюсь показать, как, используя VBA, можно сделать работу в Word еще более комфортной.

В ответ на возмущения почитателей других языков («Опять нам навязывают Basic!») могу только развести руками — если VBA как средство разработки приложений офисного пакета Microsoft существует, будучи его неотъемлемой частью, то это уже объективная реальность.

В статье вы не найдете API и процедур форматирования (подразумевается изменение абзацев, стилей, шрифтов и т. п.), которые могут создаваться пользователем посредством автоматической записи макросов (Сервис > Макрос > Начать запись) и применение которых может быть весьма разнообразно. В предлагаемом материале вы найдете только VB/VBA-процедуры, которые были написаны вручную и в дальнейшем протестированы. Исходя из потребностей разработчика, предлагаемые процедуры могут быть «модернизированы» перед дальнейшим их использованием как в Шаблонах документов, так и в самих документах.

Конечно, все охватить в пределах одной статьи невозможно. Мне остается лишь утешить себя мыслью, что читатели достаточно хорошо ориентируются в MS Office и в состоянии самостоятельно пользоваться встроенными справками по Word и VB. По этой же причине в предлагаемых примерах, как правило, будут опущены обработчики ошибок.

Шаблон — превентивная защита от макровирусов

Любой создаваемый в Word'е документ базируется на определенном шаблоне. Шаблон можно рассматривать как стандартный бланк, подготовленный для заполнения. Каждый шаблон может содержать макрокоманды, элементы автотекста, установки и другие параметры документа.

При разработке Шаблона документа (как и любого документа) я придерживаюсь следующих правил:

• использовать только те шрифты, которые входят в поставку пакета;

• полное отсутствие в документе обновляемых полей и формул — все данные автоматического ввода находятся в контролах форм и объектах панелей инструментов;

• отсутствие связей с другими файлами, отсутствие гиперссылок (кроме интернет-адресов и адресов электронной почты);

• использование таблиц для группировки информации;

• сохранение документов в формате RTF.

Причины могут быть обусловлены, например, перспективами рассылки по e-mail — что работает на Вашей машине, может не заработать на другой.

Поместив папку со своим очередным набором шаблонов документов в каталог, в котором находятся установленные готовые шаблоны MS Office, Вы будете иметь подобие подшивки бланков (см. рис. 1), доступ к которым можно Рис. 1осуществить через меню Файл > Создать…

Где находится папка с шаблонами документов MS Office? В зависимости от версии пакета место расположения может быть разным, к тому же при инсталляции MS Office пользователем может быть указан путь установки, отличный от предусмотренного по умолчанию. Поэтому чтобы не обременять себе жизнь поисками, достаточно прописать в модуле (также см. МК 7-8, 9, 40 за этот год) такой макрос:

Создав на основе выбранного шаблона новый документ и запустив предложенную процедуру на выполнение, вы получите путь к каталогу шаблонов.

Практическое применение данного макроса можно расширить, если добавить в конце его выражение:

которое позволяет создавать новый документ на основе используемого Шаблона, не обременяя себя поиском нужного dot-файла в диалоговом окне «Создание документа», а лишь изменив NewTemplate:=True. Таким образом, вы попросту создадите новый Шаблон.

Однажды, получив очередной Word'овский документ, я обнаружил изменения в файле Normal.dot (шаблон «Обычный»). Позволю себе напомнить, что шаблон «Обычный» является универсальным шаблоном, подходящим для разных типов документов. При запуске программы Word или нажатии кнопки «Создать…» создается новый пустой документ, основанный на шаблоне «Обычный». А в случае открытия документа, созданного на основе отсутствующего Шаблона, ссылка будет опять же на Normal.dot.

Естественно, я не испытал огромной радости от появление макрокоманд, автором которых, судя из комментариев, был народный умелец Гоша (имя не вымышленное), прописавший в первых строках своего макроса в шаблоне строку: Application.Options.VirusProtection = False.

Защиту от вирусов автор решил для меня выключить. Я полагаю, затем, чтобы мне жилось не так беззаботно, и вирусы в моих документах могли размножаться так, как им хочется.

Высказав про себя огромное «спасибо» народному умельцу, мне ничего другого не оставалось делать, как приступить к удалению макросов из шаблона и документов, использовавших этот шаблон, ибо гошино макротворение стало перекочевывать в создаваемые и вновь открываемые документы, а из зараженных документов обратно в шаблон «Обычный». Но чтобы в дальнейшем в Normal.dot не попадали непрошеные макрокоманды, защитил просмотр проекта этого шаблона паролем (см. №40 МК стр. 50)

Думаю, что разработка защищенных от просмотра шаблонов, на основе которых в дальнейшем будут создаваться пользователем текущие документы, полезна в двух отношениях. С одной стороны, вы получаете готовую, скажем так, форму для заполнения, а с другой — обзаводитесь хранилищем ваших собственных макрокоманд (процедур), внести несанкционированные изменения в которые уже никто не сможет. Можно также использовать установку атрибута файла шаблона «Только для чтения» от предотвращения случайных изменений в проекте самим разработчиком.

От антивирусной безопасности к коммерческой безопасности

Защита вашей информации, помимо комплекса технических мероприятий (простейший способ — снять дисковод и забрать принтер у болтливой секретарши :-)), должна предусматривать и организационные мероприятия. Одним из проверенных, если не самым надежным, можно считать метод ограничения доступа к конфиденциальной информации персонала. Согласитесь, что получить информацию конкурентам гораздо проще через ваших сотрудников, не прибегая к техническим уловкам и ухищрениям, незаконным проникновениям в помещение и т. д. и т. п. Каким способом заинтересованные фирмы или органы могут добиться желаемого результата, на страницах МК мы рассматривать не будем, оставив эту тему авторам детективно-приключенческого жанра. Но на примере создания собственного, достаточно простого приложения, попытаемся организовать несложный документооборот, в котором один из исполнителей будет получать для последующей обработки только ограниченную порцию информации.

Чтобы теория не расходилась с практикой, обыграем следующую ситуацию. Как правило, в офисе присутствуют такие должные лица:

• исполнитель (у кого-то называется секретарем, у кого-то для него придумали иное название), в обязанности которого входит выполнение канцелярской рутинной работы и которому-то знать много просто не положено;

• финансовый управленец, посвященный в «секреты» фирмы, владеющий сведениями о движении денежных средств, взаимоотношениях фирмы с партнерами, между учредителями и т. д. и т. п.

А вот выступить в роли разработчика программного обеспечения предлагаю вам, уважаемый читатель.

Так как наш секретарь готовит (а это верно для 90% наших фирм) свои несложные документы в Word'е, то и разрабатывать приложение будем для Word'а. Допустим, «засекреченный» финансист свой учет и финансовый анализ ведет в Excel'е или в другом табличном процессоре. Таблица, по сути, и является способом организации данных в такого рода документах, одновременно выполняя роль базы данных. Кому не нравится Excel, пусть попробует применить предлагаемые рецепты в другой программе.

База данных — это набор однородной, как правило, упорядоченной по определенному критерию информации. С точки зрения простого пользователя, база данных — это программа, обеспечивающая пользователю работу с информацией; с точки зрения разработчика, база данных представляется файлом (набором файлов), содержащим информацию плюс программное обеспечение, позволяющее управлять файлом (файлами) базы данных:

• получать необходимые данные, делая запросы;

• добавлять, редактировать, удалять записи;

• создавать отчеты;

• осуществлять выведение на печать отобранной информации и др.

В настоящее время существует достаточное большое количество программных систем управления базами данных — например Paradox, FoxPro, dBase, Access, входящий также в пакет MS Office и др. Для разных задач целесообразно использовать и различные модели баз данных.

В MS Office внешние данные могут быть получены, например, с помощью Microsoft Query. Но чтобы использовать программу Microsoft Query, ее необходимо для начала установить, уметь с ней работать, а что немаловажно, для получения данных необходимо иметь доступ к внешнему источнику, ведь если установлен пароль для открытия файла, то обмен данными будет блокирован. Какие бы решения не были предложены для получения данных из документа-сервера в документ-клиент, разрешение на доступ будет являться определяющим. Выход из этой ситуации видится в создании дополнительного файла, в который будет «сливаться» только строго ограниченная порция информации, и именно к нему будет иметь доступ документ-клиент (то бишь секретарь).

Кто-то может возразить: «Многие системы ведения финансового анализа и бухучета (например, система ) позволяют создавать разные пользовательские интерфейсы для разных категорий персонала, имеющих разные права!» Но позвольте ответить вопросом: «Способен ли Ваш секретарь полноценно работать в подобного рода программе? А как быть с переносом документов, подготовленных в этой программе, на другой ПК, если на нем данная система не установлена?» Придется решать проблему конвертирования в нужный формат.

Иногда при хранении и обработке небольшой информации (условно будем считать, до 500 записей) использование полноценного механизма баз данных просто неоправдан, поскольку его применение приведет к усложнению программного кода, а увеличение размеров последнего приведет к замедлению выполнения программы. Самый простой и, я думаю, оправданный способ — применение текстового файла с последовательным доступом, когда все записи из файла считываются последовательно.

Пример использования контрола в VB-проекте для сохранения баз данных в текстовых файлах можете найти по адресу http://vbrussian.com/vb_soft.asp.

Чтобы создать текстовый файл, можно воспользоваться любым текстовым редактором. В данном файле, размещая каждую запись в отдельной строке, вы получите простенькую базу данных в текстовом формате, причем созданный файл может редактироваться даже персоналом, не обученным работе с базами данных. Что еще хорошо в данной ситуации — можно разработать программный код, выполняющий обновление текстового файла из приложения-Рис. 2сервера.

Взаимодействие между файлами в приложении может быть организовано следующим образом (см. рис. 2):

При таком взаимодействии в приложении разработчик должен указать только место нахождения промежуточного файла (3), а файлы документов и шаблона (1, 2, 4) могут свободно перемещаться и копироваться.

В определенных случаях промежуточный файл (в нашем случае он текстовый), как и буфер обмена, может стать связующим звеном при организации обмена данными между различными программными продуктами.

Контрольная для контрола

Считываемые из текстового файла данные пользователь должен получить в систематизированном виде, не вникая в механизм заполнения элементов Рис. 3управления.

В отличие от MS Office 97, возможности MS Office 2000 позволяют разрабатывать пользовательские формы, модальность отображения которых можно отменить. Для этого достаточно свойство ShowModal пользовательской формы установить в False. Данный режим обеспечивает пользователю одновременную работу как с документом, так и с элементами управления формы при ее отображении.

В стандартный набор панели элементов управления MS Office входит ЭУ (элемент управления) ListBox (список), имеющий много общего с ЭУ VB6 List (список). Но в отличие от VB6 (рис. 3), офисный контрол не поддерживает сортировку записей, что может быть чревато большими неудобствами при поиске нужного клиента в значительном количестве элементов в списке.

Пример заполнения ЭУ в окне кода VB6 и в режиме выполнения показан на рис. 4.

И хотя ЭУ ListBox MS Office не обладает возможностью сортировки, разработчиками предусмотрено свойство MatchEntry, при установке которого в:

а) fmMatchEntryFirstLetter

(синтаксис: ListBox1.MatchEntry = fmMatchEntryFirstLetter) — возможно сопоставление каждому введенному символу первого слова в списке, Рис. 4начинающегося с этого символа;

б) fmMatchEntryComplete

(синтаксис: ListBox1.MatchEntry = fmMatchEntryComplete), — осуществляется подбор слова, содержащего все введенные символы.

К сожалению, эти возможности применимы исключительно для списков, заполненных цифрами и латинскими символами — даже в MS Office 2000.

(Продолжение следует)

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov