Это первая статья из цикла, в котором будут рассмотрены базовые знания по разработке на IS-Builder. Этот курс не заменяет курс по разработке и справочные материалы, но позволяет начать самостоятельное изучение системы и модификации системы с помощью IS-Builder.
ISBL, IS-BUILDER LANGUAGE — встроенный в IS-Builder высокоуровневый язык программирования, предназначенный для описания алгоритмов работы прикладных задач.
Для успешного программирования на ISBL и решения прикладных задач важно понимание архитектуры системы DIRECTUM и программной модели платформы IS-Builder.
DIRECTUM – клиент-серверное приложение, поэтому программные компоненты делятся на клиентские и серверные. В состав серверных программных компонент системы DIRECTUM в минимальном случае входит база данных под управлением СУБД Microsoft SQL Server, сервер сеансов и служба Workflow.
В зависимости от того, где заданы вычисления, они выполняются либо на сервере, либо на клиенте. Это задает свои особенности, например, в вычислениях на сервере нельзя выводить информационные сообщения. Подробнее об этом будет рассказано в следующих статьях при описании разработки конкретных компонент.
Платформа IS-Builder предлагает инструменты быстрого и удобного создания всех компонентов корпоративной системы электронного документооборота. Среди них справочники, карточки электронных документов, сценарии, типовые маршруты, их отдельные блоки и т.д. Для этого используются компоненты разработчика (располагаются в папке Компоненты/Утилиты разработчика):
Компоненты для разработки справочников
Справочник — список определенных объектов (записей) с заданным набором реквизитов. Например, в системе определен справочник Работники, в котором хранятся данные о работниках. В качестве реквизитов (полей) записей заданы: Фамилия, Имя, Отчество, Дата рождения, Должность, Подразделение и т.д.
Для разработки и модификации справочников используется компонента Типы справочников, которая позволяет:
- задавать реквизиты справочника (реквизиту соответствует поле в таблице в БД);
- разрабатывать карточки записей в специальном редакторе;
- задавать вычисления на реквизитах и кнопках;
- разрабатывать интегрированные отчеты, т.е. отчеты, связанные с записью (записями) конкретного справочника.
Для создания и модификации реквизитов справочников, генерации полей в БД используется компонента Реквизиты справочников.
Компоненты для разработки карточек электронных документов
Электронный документ состоит из двух частей: из карточки и из текста. В карточке документа хранятся значения основных реквизитов документа, таких как наименование, дата, номер, автор и т.п. В тексте хранится содержимое документа. Для разработки и модификации карточек документов используется компонента Типы карточек электронных документов. Компонента имеет возможности аналогичные компоненте для разработки справочников, кроме разработке интегрированных отчетов. Для создания и модификации реквизитов карточек документов, генерации полей в БД используется компонента Реквизиты электронных документов.
Компоненты для разработки сценариев и отчетов
Сценарии предназначены для задания произвольных вычислений на ISBL. Например, стандартный сценарий Экспорт записей справочников – используется для экспорта записей выбранного справочник в xml-файл. Для создания и модификации сценариев используется компонента Сценарии.
Отчеты предназначены для вывода информации, чаще всего хранящейся в базе данных, в виде документа в заданном формате. Перед формированием отчета пользователь может задать условия выбора информации. В дальнейшем в зависимости от назначения отчета этот документ можно распечатать для передачи руководству, отправки контрагенту и т.д. Например, отчет Реестр договоров. При запуске отчета пользователь может заполнить Дату регистрации с, Дату регистрации по, Категорию договора и т.д., в итоге отчет будет содержать информацию о всех договорах, содержащихся в справочнике Договоры, дата регистрации которых попадает в заданный период и удовлетворяет заданным параметрам. Для разработки и модификации отчетов используется компонента Разработка отчетов.
Отчеты и сценарии группируются по модулям. Модуль — относительно самостоятельная часть системы, выполняющая определенный набор связанных функций.
Компоненты для разработки функций
Для разработки функций используется компонента Функции ISBL. В системе уже есть множество разработанных функций, которые решают типовые задачи.
Компоненты для настройки типовых маршрутов
Типовые маршруты (ТМ) предназначены для задания взаимодействия между сотрудниками с возможностью многократного использования. Например, ТМ Согласование договорных документов. В этом маршруте задан порядок согласования (руководитель подразделения, специалисты юридического отдела, визирующие), подписания и регистрации договора. Типовые маршруты разрабатываются и модифицируются в компоненте Типовые маршруты.
В маршрутах могут использоваться роли (Регистратор договоров, Секретарь генерального директора и т.д.), они задаются в компоненте Роли.
Для расчета сроков задач с учетом рабочего времени (например, на регистрацию договора выделяется 2 раб. дня) используется компонента Календари.
Для разработки блоков типовых маршрутов, которые можно будет многократно использоваться в различных маршрутах, используется компоненты Блоки типовых маршрутов.
Компонента для настройки мастеров действий
Мастера действий предназначены для поэтапного выполнения определенной типовой задачи, например, оформление заявления на отпуск, создание совещания. Для настройки используется компонента Мастера действий.
Компонента для работы с константами
Константы хранят информацию, которая не изменяется или изменяется достаточно редко: сервер входящей почты, код национальной валюты, время ожидания повторной отправки и т.д. Для создания констант и их значений используется компонента Константы.
Компоненты для экспорта/импорта разработки
Для экспорта/импорта разработки используются компоненты Экспорт разработки и Импорт разработки. Эти утилиты потребуются, если нужно перенести разработку из одной системы в другую – например, из тестовой базы в рабочую.
Прочие компоненты
Компонента Выполнить внешний сценарий предназначена для выполнения сценариев на языке ISBL, которые хранятся в виде текстовых файлов вне системы DIRECTUM. Используется для выполнения разовых сценариев.
Компонента Поиск в текстах разработки позволяет выполнить поиск произвольной строки в компонентах разработчика: событиях справочников, функциях, сценариях, расчетах и шаблонах отчетов, и т.д. Используется если нужно найти, где используется определенная строка, например, функция.
Более подробно разработка различных компонент с использованием описанных инструментов будет рассмотрена в следующих статьях.
Блокировка элементов разработки
С целью защиты элементов разработки от одновременного изменения несколькими разработчиками начиная с версии DIRECTUM 5.1 имеется возможность ставить на элементы разработки блокировку. Для внесения изменений в элемент разработки его необходимо заблокировать. Данная информация отображается в карточке элемента разработки:
Механизм блокировок доступен для следующих компонент: Отчеты, Сценарии, Функции ISBL, Блоки типовых маршрутов, Типы справочников, Типы карточек документов, Типовые маршруты, Мастера действий.
По умолчанию механизм блокировки элементов разработки выключен. Включение и выключение механизма задается в новой установке системы DevelopmentComponentLocksEnabled. Для контроля изменений в разработке при экспорте или импорте появился флажок Снимать мои блокировки.
На одном из проектов столкнулась с ситуацией, когда построение отчета, в котором заполняются таблицы, занимало слишком много времен. Проанализировав код расчета отчета, поняла, что очень много времени тратится на заполнение таблиц с помощью функции
ListMergeTableWord, таким образом, я попыталась исключить использование данной функции в расчете. Решением данной ситуации было внесение данных в таблицы Excel, а затем вставка заполненных таблиц Excel в документ отчета и дальнейшем форматированием
документа с помощью IS-Builder, таким образом, удалось сократить время построения отчета в несколько раз. Это скорее не единичный случай использования объектной модели MS Office для решения задач для генерации документов, а постоянно выполняемая задача.
Например, в рамках другого проекта была поставлена одна из задач: формировать версии документов без возможности их редактирования. Для решения данной задачи был выбран вариант преобразования документов в формате docxls в формат pdf, хотя, возможен и другой
формат, в который возможно преобразование документа в MS Office. Существует 2 способа преобразования документа: 1) с помощью службы преобразования; 2) с помощью объектной модели MS Office (с 2007 версии). Мною был выбран 2 способ так, как исключается промежуточное
звено (служба преобразования), соответственно уменьшается нагрузка на сервер, увеличивается скорость преобразования и нет необходимости настраивать службу. Ниже будет приведен способ преобразования документа формата doc в формат pdf (35-й пункт).
В данной статье хотелось описать наиболее востребованные способы форматирования документа в формате doc с помощью
IS—Builder.
Word = CreateObject("Word.Application") Doc = Word.Documents.Open(Path) где Path - путь к документу, с которым работаете.
- Установка единицы измерения размера таблицы
Doc.Tables(1).PreferredWidthType = 2
Единица измерения |
Константа в Word |
Значение в ISBL |
Сантиметры |
wdPreferredWidthPoints |
3 |
Проценты |
wdPreferredWidthPercent |
2 |
- Установка ширины таблицы
Doc.Tables(1).PreferredWidth = 100 // ширина таблицы в процентах Doc.Tables(1).PreferredWidth = Word.CentimetersToPoints(17.5) // ширина таблицы в сантиметрах
- Автоподбор размера ячейки таблицы
Doc.Tables(1).AutoFitBehavior(2)
Режим выравнивания |
Константа в Word |
Значение в ISBL |
Фиксированная ширина |
wdAutoFitFixed |
0 |
По содержимому |
wdAutoFitContent |
1 |
По ширине окна |
wdAutoFitWindow |
2 |
- Установка высоты ячеек
Doc.Tables(1).Rows.HeightRule = HeightRule // указывает на способ изменения высоты Doc.Tables(1).Rows.Height = RowHeigh // RowHeight указывает на новую высоту строки в пунктах.
Значение константы HeightRule
Способ изменения высоты |
Константа в Word |
Значение в ISBL |
Размер, указанный в параметре RowHeigh, является точным |
wdRowHeightAuto |
2 |
Размер, указанный в параметре RowHeigh, является минимальным |
wdRowHeightAtLeast |
1 |
Автоматический подбор высоты строк (параметр RowHeigh игнорируется) |
wdRowHeightExactly |
0 |
- Установка интервала абзаца (перед и после) в таблице
Doc.Tables(1).Range.ParagraphFormat.SpaceBefore = 6 //интервал перед Doc.Tables(1).Range.ParagraphFormat.SpaceAfter = 6 //интервал после Единица измерения интервала пт.
- Установка интервалов перед и после абзаца
Doc.Paragraphs(1).Format.SpaceBefore = 12 // интервал перед Doc.Paragraphs(1).Format.SpaceAfter = 12 // интервал после
- Межстрочный интервал
Doc.Paragraphs(1).Format.LineSpacingRule = 0.5 // одинарный интервал 1 – полуторный интервал и 1.5 – двойной интервал.
- Установка стиля таблицы
Doc.Tables(1).Style = ИмяСтиляТаблицы
- Установка отступа слева
Doc.Tables(1).Rows.LeftIndent = 0
- Абзацный отступ (красная строка) абзаца
Doc.Paragraphs(1).Format.FirstLineIndent = Значение в пунктах
Для перевода сантиметров в пункты можно воспользоваться функцией
CentimetersToPoints, тогда абзацный отступ в 1,5 см можно задать следующим образом:
Doc.Paragraphs(1).Format.FirstLineIndent = Word.CentimetersToPoints(1.5)
- Установка левой и правой границ текста абзаца:
Doc.Paragraphs(1).Format.LeftIndent = 10 // отступ слева Doc.Paragraphs(1).Format.RightIndent = 10 // отступ справа
- Установка значений полей ячеек по умолчанию
Doc.Tables(1).TopPadding = 0 // верхнее Doc.Tables(1).BottomPadding = 0 // нижнее Doc.Tables(1).LeftPadding = 0 // левое Doc.Tables(1).RightPadding = 0 // правое
- Выравнивание текста в таблице по горизонтали
Doc.Tables(1).Range.ParagraphFormat.Alignment = 3 // по ширине
Режим выравнивания |
Константа в Word |
Значение в ISBL |
По левому краю |
wdAlignParagraphLeft |
0 |
По центру |
wdAlignParagraphCenter |
1 |
По правому краю |
wdAlignParagraphRight |
2 |
По ширине |
wdAlignParagraphJustify |
3 |
- Выравнивание текстового абзаца:
Doc.Paragraphs(1).Format.Alignment = 0 // выравнивание по левому краю
Значения констант выравнивания такие же как в предыдущем пункте.
- Выравнивание текста в ячейке по вертикали
Doc.Tables(1).Rows(НомерСтроки).Cells(НомерСтолбца).VerticalAlignment = 1
Режим выравнивания |
Константа в Word |
Значение в ISBL |
По верхнему краю |
wdCellAlignVerticalTop |
0 |
По центру |
wdCellAlignVerticalCenter |
1 |
По нижнему краю |
wdCellAlignVerticalBottom |
3 |
- Установка размера шрифта таблицы
Doc.Tables(1).Range.Font.Size = 7
- Установка цвета текста в ячейке
Doc.Tables(1).Cell(НомерСтроки; НомерСтолбца).Range.Font.Color = 255
- Выделение всего текста таблицы (жирным, курсивом, подчеркиванием)
Doc.Tables(1).Range.Font.Bold = True // жирным Doc.Tables(1).Range.Font.Italic = True // курсивом Doc.Tables(1).Range.Font.Underline = True // подчеркивание
- Установка цвета подчеркивания
Doc.Tables(1).Cell(НомерСтроки; НомерСтолбца).Range.Font.UnderlineColor = 255
- Установка темы шрифта таблицы
Doc.Tables(1).Range.Font.Name = "Arial"
- Объединение ячеек
// объединение первой и второй ячеек первой строки Cell = Doc.Tables(1).Cell(1; 1) Cell.Merge(Doc.Tables(1).Cell(1; 2))
- Вставка Excel таблицы
в Word
SelectionWord = Doc.Paragraphs(Paragraph).Range SelectionWord.PasteExcelTable(True; False; False)
Paragraph
– номер параграфа, куда будет вставлена таблица из Excel.
- Разрыв связь
Doc.Fields.Unlink
- Удаление абзаца
Doc.Paragraphs(Paragraph).Range.Delete
Paragraph
– номер параграфа, который нужно удалить.
- Удаляем строку в таблице
Doc.Tables(1).Rows(НомерСтроки).Select Doc.Tables(1).Rows(НомерСтроки).Delete
- Установка границ таблицы
Table = Doc.Tables(1) Table.Borders(WdBorderType).LineStyle = 4
Расположение линии |
Значение в Word |
Константа в ISBL |
Линия, обрамляющая диапазон сверху |
wdBorderTop |
-1 |
Линия, обрамляющая диапазон слева |
wdBorderLeft |
-2 |
Линия, обрамляющая диапазон снизу |
wdBorderBottom |
-3 |
Линия, обрамляющая диапазон справа |
wdBorderRight |
-4 |
Все горизонтальные линии внутри диапазона |
wdBorderHorizontal |
-5 |
Все вертикальные линии внутри диапазона |
wdBorderVertical |
-6 |
Линия по диагонали сверху – вниз |
wdBorderDiagonalDown |
-7 |
Линия по диагонали снизу – вверх |
wdBorderDiagonalUp |
-8 |
- Закрасить всю таблицу
цветом
Doc.Tables(1).Shading.BackgroundPatternColor = 255 // заливка красным цветом
- Закрасить ячейку цветом
Cell = Doc.Tables(1).Cell(1; 1) Cell.Shading.BackgroundPatternColor = -687800525 // заливка желтым цветом
- Установка ориентации страницы
Doc.Application.Selection.PageSetup.Orientation = 1 // альбомная Doc.Application.Selection.PageSetup.Orientation = 0 // книжная
- Установка полей страницы
Word.Application.Selection.PageSetup.LeftMargin = Word.CentimetersToPoints(2) // левое поле Word.Application.Selection.PageSetup.RightMargin = Word.CentimetersToPoints(2) // правое поле Word.Application.Selection.PageSetup.TopMargin = Word.CentimetersToPoints(2) // верхнее поле Word.Application.Selection.PageSetup.BottomMargin = Word.CentimetersToPoints(2) // нижнее поле
- Добавление таблицы в документ
Doc.Tables.Add(Doc.Paragraphs(1).Range; 3; 5) // добавление таблицы из 5 столбцов и 3 строк в 1 абзац
- Добавление строки в таблицу
Doc.Tables(1).Rows.Add
- Добавление колонки в таблицу
Doc.Tables(1).Columns.Add
- Добавление текста в ячейку
Doc.Tables(1).Cell(1;3).Range.Text = 'Текст, который добавляется в ячейку'
- Сохранение документа в pdf формат
Doc.ExportAsFixedFormat(Path; 17; openAfterExport; CreateBookmarks)
где
- Path — полный путь и имя нового файла формата PDF;
- 17 — значение Microsoft.Office.Interop.Word.WdExportFormat, указывающие, что сохранять документ в формате PDF;
- openAfterExport — Значение True используется, чтобы автоматически открыть новый файл; в противном случае используется значение False.
- CreateBookmarks — значение указывает, следует ли экспортировать закладки и тип закладки. Значение константы WdExportCreateBookmarks:
- wdExportCreateHeadingBookmarks = 1 — Создание закладки в экспортируемом документе для всех заголовком, которые включают только заголовки внутри основного документа и текстовые поля не в пределах колонтитулов, концевых сносок, сносок или комментариев.
- wdExportCreateNoBookmarks = 0 — Не создавать закладки в экспортируемом документе.
- wdExportCreateWordBookmarks = 2 — Создание закладки в экспортируемом документе для каждой закладки, которая включает все закладки кроме тех, которые содержатся в верхнем и нижнем колонтитулах.
P.S.: Аналогичная статья для Excel
Несколько способов форматирования и обработки данных в Excel документах с помощью IS-Builder.
Язык
ISBL (IS-Builder Language)
– встроенный в платформу IS-Builder высокоуровневый язык
программирования, на котором задаются все программные вычисления
внутри систем, разработанных на этой платформе:
·
обработка
событий при работе со справочниками и карточками электронных
документов;
·
подготовка
данных для отчетов;
·
тексты сценариев
и прикладных функций;
·
задание логики
работы типовых маршрутов и их отдельных блоков;
·
вычисление ролей
и описание поисков объектов в системе.
Подробнее см. в разделе
«Редактор
вычислений. Способы вызова».
Язык ISBL, как и любой
высокоуровневый язык программирования, включает в себя следующие
элементы:
·
Константы –
любые постоянные значения, используемые, например, при присваивании
значений переменным или параметрам функций (подробнее см. в разделе
«Константы
ISBL»);
·
Переменные –
имена для значений, используемые при обращении к этим значениям
(подробнее см. в разделе «Переменные
ISBL»);
·
Операции –
условные записи математических, логических, строковых и некоторых
других функций (подробнее см. в разделе «Операции
ISBL»);
·
функции –
именованные последовательности операторов, предназначенные для их
многократного использования (подробнее см. в разделе «Функции
ISBL»);
·
массивы –
именованные структуры данных, обращение к которым осуществляется по
имени и индексу данных в структуре (подробнее см. в разделе
«Массивы
ISBL»);
·
выражения –
константы, переменные, элементы массивов и функции, связанные
определенными операциями (подробнее см. в разделе «Выражения
ISBL»);
·
операторы –
синтаксические «фразы» языков программирования, позволяющие
реализовывать алгоритмы программ. Например, «оператор присваивания»
или «оператор условного ветвления» (подробнее см. в разделе
«Операторы
ISBL»);
·
комментарии –
тексты вычислений, не учитываемые при их выполнении, например,
пояснения к текстам программ (подробнее см. в разделе «Комментарии
ISBL»).
Примеры использования этих
элементов см. в разделе «Примеры
использования выражений и операторов ISBL».
В текстах вычислений на
ISBL можно использовать методы и свойства объектов IS-Builder,
например, методы и свойства работы со справочниками или
электронными документами. Описание объектов см. в справочной
системе «Объектная
модель DIRECTUM».
Из текстов ISBL можно
обращаться к объектам сторонних приложений, например, к документам
Microsoft Word или к книгам Microsoft Excel (см. раздел «Примеры
обращения к объектам сторонних приложений»).
Для написания вычислений на
языке ISBL используется специальный редактор (см. раздел «Редактор
вычислений. Описание»).
Содержание
- 1 Microsoft Word 2003
- 2 Microsoft Word 2007
- 3 Microsoft Word 2010
- 4 Microsoft Word 2013
- 5 Microsoft Word 2016
- 6 Автозагрузка надстроек в Microsoft Word
- 6.1 Другие материалы по теме:
- 6.2 Как добавить Google Drive в Microsoft Office
- 6.3 Как добавить «Википедию» в Microsoft Office
- 6.4 Как добавить случайные значения в Excel
- 6.5 Как наполнить Word случайным текстом
- 6.6 Как добавить документы-вкладки в Word
- 6.7 Как вернуть классическое меню Microsoft Office 2003
- 6.8 Как сделать наглядную временную шкалу в PowerPoint
- 6.9 Как добавить карту в презентацию PowerPoint
Надстройки — это подключаемые модули, которые расширяют возможности приложения, в данном случае Microsoft Word. Существуют разные виды надстроек, остановимся пока на надстройках, основанных на шаблонах. Что такое шаблон в Word? Шаблон — это специальный файл, в котором содержатся различные сведения о стилях, структуре, параметрах страниц, содержащихся макросах и так далее, на основе которого можно создавать новые документы.
Существует два вида шаблонов — общие и шаблоны конкретных документов. Файлы шаблонов имеют расширение «.dot» или «.dotm». Общие шаблоны, в том числе и шаблон Normal.dot, в который по умолчанию сохраняются макросы записываемые макрорекордером, содержат настройки, доступные всем документам MS Word. Шаблон конкретного документа содержит настройки, доступные только для документов, основанных на этом шаблоне. В Word имеется ряд встроенных шаблонов документов, например шаблоны писем, контрактов, резюме и прочее. Выбрать нужный шаблон можно при создании нового документа.
Кроме этого пользователи могут сами создавать шаблоны для своих документов. Один и тот же шаблон может использоваться и как общий шаблон и как шаблон документа. Теперь рассмотрим сам процесс загрузки и подключения шаблонов. Чтобы не возникало путаницы, условно разделим шаблоны на «загруженные» и «подключенные». Загруженными будем считать шаблоны, ставшие доступными приложению MS Word, а подключенными будем считать шаблоны, которые не только загружены, но и сделаны активными (в списке шаблонов и надстроек перед ними проставлены флажки). Глобальный шаблон Normal.dot по умолчанию всегда и загружен и подключен. Обратите внимание на скриншот ниже, загружено три шаблона, а подключен из них один (не считая шаблона Normal).
В зависимости от того насколько часто шаблон будет использоваться, расположить его можно в разных папках. Для того, чтобы шаблон автоматически загружался и также автоматически подключался при каждом запуске MS Word, расположить его нужно в папке по адресу Documents and Settings/Ваше имя/Application Data/Microsoft/Word/Startup.
Если шаблон разместить в папке Documents and Settings/Ваше имя/Application Data/Microsoft/Шаблоны, то загружать и подключать его нужно будет вручную (об этом чуть позже), кроме того при каждом следующем запуске приложения Word, этот шаблон будет в списке загруженных шаблонов и надстроек, но снова будет выключенным. В этом списке отображаются не только общие шаблоны из папки «Шаблоны», но и шаблоны, автоматически загружаемые при запуске MS Word.
Еще один типичный случай, когда шаблон расположен в совершенно произвольной папке. Подключение рассмотрим в разных версиях в отдельности.
Microsoft Word 2003
Запускаем приложение, заходим в меню Сервис/Шаблоны и надстройки…
В появившемся диалоговом окне «Шаблоны и надстройки» нажимаем кнопку «Добавить…»
Через открывшееся окно проводника находим папку с нужным шаблоном. После добавления этот шаблон появится в списке шаблонов и надстроек, слева от него будет установлена галочка. Шаблон (надстройка) загружен и подключен.
Microsoft Word 2007
В запущенном приложении нажимаем кнопку Office и переходим в «Параметры Word». В диалоговом окне «Параметры Word» выбираем раздел «Надстройки». В поле «Управление» выбираем пункт «Надстройки Word» либо «Шаблоны» без разницы, после чего нажимаем кнопку «Перейти…».
Появляется диалоговое окно «Шаблоны и надстройки», в нем нажимаем кнопку «Добавить…» и добавляем нужный шаблон.
Это же диалоговое окно можно вызывать нажатием кнопки «Шаблон документа» на вкладке «Разработчик».
Если такая вкладка в Вашем приложении отсутствует, ее необходимо предварительно отобразить, это упростит и ускорит доступ к окну управления шаблонами и надстройками.
Microsoft Word 2010
В запущенном приложении переходим на вкладку «Файл», окрашенную в синий цвет, после чего переходим в «Параметры Word». В диалоговом окне «Параметры Word» выбираем раздел «Надстройки». В поле «Управление» выбираем пункт «Надстройки Word» либо «Шаблоны» без разницы, после чего нажимаем кнопку «Перейти…».
В появившемся диалоговом окне «Шаблоны и надстройки» нажимаем кнопку «Добавить…» и выбираем шаблон, который собираемся установить.
Тоже самое можно проделать еще быстрее, просто нажать кнопку «Шаблон документа» на вкладке «Разработчик».
Но есть один нюанс, вкладка «Разработчик» по умолчанию в приложении отсутствует, ее необходимо предварительно отобразить, на вкладке собраны инструменты для работы с макросами и надстройками и отображение этой вкладки упростит и ускорит доступ к окну управления шаблонами и надстройками.
Microsoft Word 2013
Также как и в Word 2010, в Word 2013 надстройки (шаблоны) можно установить двумя способами:
1. Через вкладку «Файл»/Параметры/Надстройки, в поле «Управление» из выпадающего списка выбрать пункт «Надстройки Word» либо «Шаблоны» и кликнуть по кнопке «Перейти». В появившемся окне менеджера надстроек «Шаблоны и надстройки» при помощи кнопки «Добавить» выбрать файл устанавливаемой надстройки и нажать «ОК».
2. Отобразить на ленте вкладку «Разработчик» и кликнуть по кнопке «Надстройки» в группе кнопок «Надстройки» либо по кнопке «Шаблон документа» в группе кнопок «Шаблоны».
После этого в появившемся окне «Шаблоны и надстройки» кликнуть по кнопке «Добавить» и выбрать файл надстройки, которую необходимо установить.
Процесс установки надстроек (шаблонов) для Word, на примере Word 2013 записан на видео и выложен в youtube (смотреть видео по установке надстроек).
Microsoft Word 2016
В Word 2016 установить надстройку/шаблон можно также, как и в предыдущих версиях, либо через вкладку «Файл»/Параметры/Надстройки с выбором пункта «Надстройки для Word» в поле «Управление», либо отобразить на ленте вкладку «Разработчик», кликнуть по кнопке «Надстройки» либо «Шаблон документа» и при помощи кнопки «Добавить» выбрать файл надстройки, которые требуется установить.
Автозагрузка надстроек в Microsoft Word
Чтобы надстройка автоматически загружалась и подключалась при запуске Word, её необходимо разместить в определенной папке по адресу …/Microsoft/Word/Startup. Если в папке …/Microsoft/Word нет папки Startup, то её можно создать вручную. Та часть пути к папке, которая обозначена многоточием, может различаться в зависимости от версий Windows и Office. Универсальный способ при помощи которого можно определить весь путь к папке автозагрузки, независимо от версий операционной системы и Office — найти место расположения шаблона Normal.dot или Normal.dotm, подняться на один уровень вверх, это будет папка «…/Microsoft» найти и перейти в папку «Word». Путь к папке автозагрузки должен выглядеть примерно так:
C:UsersВашеИмяAppDataRoamingMicrosoftWordSTARTUP
Другие материалы по теме:
Конструирование интерфейсов чаще всего используется при создании надстроек. Надстройка представляет собой невидимый документ со встроенным VBA-кодом и с собственными дополнениями к интерфейсу, автоматически открываемый приложением при запуске. При запуске он не показывает своё тело (т.е. содержимое документа
—
текст, рисунки и пр.), а проявляется только своими изменениями в интерфейсе и подключенными макросами. Таким образом, приложение Microsoft Office дополняет свой функционал, и позволяет редактировать другие документы, используя вновь полученные функции.
Документ надстройки для Word имеет расширение .dotm. Фактически, надстройка для Word является обычным шаблоном с поддержкой макросов. Для надстроек Excel и PowerPoint имеются отдельные расширения — .xlam и .ppam соответственно.
Замечу, что надстройки .xlam и .ppam просто так не открываются в приложениях в качестве документа для редактирования, поэтому пока такая надстройка не готова, её сохраняют как обычный документ с поддержкой макросов. А вот шаблон .dotm можно открыть в Word именно как шаблон (по крайней мере, Ribbon XML Editor это делает), поэтому его можно сохранять шаблоном и в процессе разработки надстройки. Однако, я всё же рекомендую действовать единообразно, и исходники надстроек всегда держать в формате обычных документов с поддержкой макросов, и переводить их в шаблоны или надстройки только после полного окончания их разработки.
Итак, давайте попробуем построить надстройку Word, которая будет выглядеть, как отдельная вкладка, и содержать группу с кнопками, выполняющими некоторые действия. Пусть это будут некие действия с пробелами. Замечу, что процесс создания надстройки Excel ничем не отличается от создания надстройки Word и, умея создавать одно, вы будете уметь создавать другое.
Откроем Ribbon XML Editor, откроем в нём наш подопытный документ, и в окно для 2007-го интерфейса скопируем текст интерфейса нашей надстройки:
Ознакомьтесь с кодом интерфейса. Тут всё просто. Надстройка добавляет новую вкладку, и располагает на ней группу работы с пробелами, содержащую три кнопки. Для упрощения примера, в качестве иконок для кнопок я использовал максимально подходящие встроенные изображения. Вы можете использовать вместо них свои собственные, вы это уже умеете.
Первая кнопка удаляет все повторяющиеся пробелы. Довольно полезная функция, учитывая то, что правильная вёрстка в Word вообще не предполагает идущих подряд пробелов. Вторая кнопка преобразует все пробелы в переносы строк, а третья — обратное действие, т.е. переносы строк в пробелы. Тоже нужная функция для работы с последовательностями различных лексем.
Сгенерируем функции обратного вызова (Alt+F11). Скопируем шаблоны в буфер обмена (обращаем внимание на раскладку клавиатуры во избежание появления кракозябр). Закроем окно шаблонов и запустим документ. Перейдём в редактор Бейсика (Alt+F11) и вставим взятые в буфер обмена шаблоны функций вместо наших старых функций модуля RibbonCallbacks.
Теперь осталось написать на Бейсике нужные команды. Очевидно, нам понадобится функция поиска и замены. С помощью штатной функции записи макросов я выяснил, каким кодом осуществляется поиск и замена, и организовал это в виде отдельной функции, которую мы будем использовать внутри наших функций обратного вызова.
Итак, вставляем в код новую функцию:
'НайтиИЗаменить (компонент: button, атрибут: onAction), 2007 Sub НайтиИЗаменить(findString As String, replaceString As String) With Selection.Find .ClearFormatting .Replacement.ClearFormatting .Text = findString .Replacement.Text = replaceString .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll End With End Sub
Функция принимает на вход строку для поиска и строку для замены, а внутри функции вставлен код из макроса, который записывался во время реального поиска и замены. Несомненно, в нём много лишнего, так как все эти параметры наверняка имеют значения по умолчанию. Тем не менее, для надёжности я оставил всё как есть — хуже уж точно не будет.
Теперь заполняем шаблоны процедур обратного вызова:
'УдалитьПовторяющиесяПробелы (компонент: button, атрибут: onAction), 2007 Sub УдалитьПовторяющиесяПробелы(control As IRibbonControl) Dim NumCharsBefore As Long, NumCharsAfter As Long Do NumCharsBefore = ActiveDocument.Characters.Count Call НайтиИЗаменить(" ", " ") NumCharsAfter = ActiveDocument.Characters.Count Loop Until NumCharsBefore = NumCharsAfter End Sub 'ПробелыВПереносыСтрок (компонент: button, атрибут: onAction), 2007 Sub ПробелыВПереносыСтрок(control As IRibbonControl) Call НайтиИЗаменить(" ","^p") End Sub 'ПереносыСтрокВПробелы (компонент: button, атрибут: onAction), 2007 Sub ПереносыСтрокВПробелы(control As IRibbonControl) Call НайтиИЗаменить("^p", " ") Call НайтиИЗаменить("^w^p", "") End Sub
Как видите, код элементарен, ничего сложного. В первой функции мы организовываем цикл, в котором сдвоенные пробелы меняем на одинарные, и который будет выполняться до тех пор, пока при очередной его итерации размер текста до и после поиска и замены не останется равным. Это будет означать, что сдвоенных пробелов в тексте уже не осталось.
Две последние функции ещё более элементарны. Там просто вызывается наша функция по поиску и замене, которая меняет пробел на символ абзаца (^p) или наоборот. В последнем случае мы ещё и удаляем появившийся в конце текста из-за неубирающегося символа абзаца лишний пробел (^w — чистое пространство, например, пробелы или табуляция).
Сохраняем код, закрываем редактор Бейсика и сразу проверяем работу кнопок в документе. Замечу, что закрывать редактор Бейсика не обязательно, можно просто сохранить в нём изменения и переключиться в окно документа. Если кнопки заработали, как надо, сохраняем документ как шаблон с макросами (.dotm) в папку:
C:UsersAppDataRoamingMicrosoftWordSTARTUP
Теперь добавим нашу надстройку. Закрываем всё, открываем Word, лезем в Файл -> Параметры -> Надстройки -> Управление, выбираем «Надстройки Word» и нажимаем кнопку «Перейти». В открывшемся окне на первой же вкладке нажимаем «Добавить…» и выбираем наш файл. Нажимаем «ОК», и наша надстройка начинает действовать.
Программы, входящие в пакет Microsoft Office, имеют широчайший набор функций, о многих из которых пользователи даже не подозревают. С другой стороны, некоторых возможностей всё же не хватает. Часть таких пробелов можно закрыть с помощью надстроек от сторонних производителей. О наиболее интересных из них мы вам и расскажем.
Дополнения для Microsoft Office можно загрузить из официального магазина надстроек Office или с домашних страничек разработчиков. В первом случае они устанавливаются наподобие мобильных приложений, а во втором — как отдельные программы Windows. Ввиду этого дополнения могут замедлить запуск офисной программы или всей операционной системы. Незначительно, конечно, но всё же.
Как добавить Google Drive в Microsoft Office
Программы Office 2016 тесно связаны с OneDrive. Это очень хорошо, если вы всё ещё пользуетесь собственным облачным хранилищем Microsoft. Почему «всё ещё»? Напомню, совсем недавно редмондцы нежданно-негаданно урезали объём бесплатного дискового пространства, а чуть позже позволили его вернуть. Так себе история, хотя она совсем неинтересна тем, кто доверяет решениям от Google. Если вы среди них, устанавливайте плагин «Google Диска» для Microsoft Office.
С ним вам станет проще открывать и сохранять рабочие документы из удалённого хранилища Google. Соответствующие меню появятся в разделах «Открыть» и «Сохранить».
Как добавить «Википедию» в Microsoft Office
Остаётся загадкой, как разрешались споры обо всём на свете до середины января 2001 года. Ведь именно в это время появилась «Википедия», которая положила конец бесконечности недостоверной и неструктурированной информации в интернете. Смутные были времена, о которых не стоит даже вспоминать. Мы живём сегодня и хотим сделать этот миг как можно лучше. Настройка «Википедия» как раз из этой оперы. Установите её, чтобы в пару кликов получить доступ ко всемирному кладезю знаний.
К слову, нечто похожее уже есть в 2016-й версии офиса, но отдельная надстройка всё же полезнее. Например, утилита лучше структурирует результаты поиска и не просто растолковывает значения выделенных слов, но и вставляет их в ваш текст безо всякого копипаста.
Как добавить случайные значения в Excel
Минутка экстаза для тех, кто хоть раз испытывал эффективные приёмы Excel и наполнял для этого листы случайными значениями. Эта муторная задача в миллион раз проще с надстройкой Random Generator. Не нужно никаких функций и их аргументов!
Random Generator заполняет выбранные ячейки числами, датами и значениями «истина» или «ложь». В описании утилиты указано, что она предназначена для Office 2013 и более поздних версий пакета.
Как наполнить Word случайным текстом
Предположу, что скорость печати среднестатистического пользователя Word колеблется около 200 символов в минуту. И она ускоряется до тысяч символов, когда необходимо заполнить макет или таблицу чем угодно, только чтобы оценить документ визуально. Надстройка Lorem Ipsum Generator как раз и пригодится в таких случаях.
Жаль, конечно, что нет кириллицы и нельзя указать точное количество символов.
Как добавить документы-вкладки в Word
Интернет программирует наше поведение, поэтому пользователи неосознанно хотят применять свои браузерные привычки и в других программах. Например, некоторым нравится панель вкладок в самом Word вместо миниатюр на панели задач Windows. Никогда не встречали такого? Тогда попробуйте в деле Tabs for Word.
Программа умеет раскрашивать вкладки в разные цвета, а также имеет несколько настроек, которые подгонят её поведение под ваши запросы. Работоспособность проверена на Office 2016. Вирусов нет.
Как вернуть классическое меню Microsoft Office 2003
Office 2016 полон действительно классных нововведений, от которых люди старой закалки отказываются лишь потому, что им претит ленточная структура панели управления, появившаяся в 2007-й версии пакета. Программа Classic Menu for Office накладывает олдскульную оболочку поверх последних технологий.
Не берусь судить, насколько точно воспроизводится старый интерфейс, но, если верить тому, как нервно постукивает сердце, всё похоже на правду. Настроек здесь минимум.
Как сделать наглядную временную шкалу в PowerPoint
Создание временных шкал (timeline) — верный способ донести важную для исполнения информацию до всех причастных лиц. Несколько распечаток таких графиков можно приложить к основному приказу, чтобы ответственные всегда видели перед собой дату, после которой их лишат премии либо вообще попросят собрать вещи. В общем, Office Timeline — хороший инструмент для мотивации. По уверениям разработчиков, их продукт позволяет создавать временные шкалы самой разной сложности, однако для этого придётся изучить весь доступный инструментарий.
Созданную в PowerPoint шкалу можно перенести в другую офисную программу, например в тот же Word.
Как добавить карту в презентацию PowerPoint
Не все люди хорошо представляют, где находится, например, Намибия. Поэтому, уважаемые мошенники, когда вы присылаете коммерческое предложение о продаже дешёвых намибийских алмазов прямо из шахты без посредников и СМС, будьте добры, составляйте нормальную презентацию с картой мира. Надстройка Office Maps вам в помощь.
В настройках дополнения можно задать язык карты, а также указать качество и параметры её отображения.
А какими дополнениями к офисному пакету программ пользуетесь вы?
NovaInfo 64, с.50-56, скачать PDF
Опубликовано 27 апреля 2017
Раздел: Технические науки
Просмотров за месяц: 1
Аннотация
В работе средствами системы электронного документооборота DIRECTUM создана прикладная программа для согласования и регистрации заявок подразделений. Использовалась платформа IS-Builder со встроенным языком программирования IS-Builder Language. Программа включает в себя разработанный тип карточки электронного документа, справочник для хранения информации о заявках, типовой маршрут, а также функцию автоматической регистрации утвержденных заявок.
Ключевые слова
ЭЛЕКТРОННЫЙ ДОКУМЕНТ, ПРОГРАММА, ЗАЯВКА, РЕГИСТРАЦИЯ, СПРАВОЧНИК
Текст научной работы
После появления персональных компьютеров документы стали набирать в текстовом редакторе и сохранять их на локальном диске компьютера или на сетевом ресурсе в виде файлов. Новые версии документа можно было создавать, изменяя или копируя существующие файлы. Также появилась возможность создавать ксерокопии документов. Результаты работы можно было отправлять по электронной почте. Это «частично автоматизированный» документооборот.
В конце 20 века появились специальные программные продукты для работы с электронными версиями бумажных документов. Первые из этих программ выполняли только отдельные функции документооборота, например: только работа с электронными документами, или только регистрация бумажных документов (функции делопроизводителя), или только пересылка документов сотрудникам для работы.
Венцом развития документооборота стали комплексные системы электронного документооборота, которые полностью автоматизировали все этапы работы с документами и подняли на новый качественный уровень процессы управления организацией. Это «полностью автоматизированный» документооборот [2].
Система электронного документооборота и управления взаимодействием DIRECTUM — это один из ярчайших представителей комплексных систем электронного документооборота последнего поколения.[5] Для системы DIRECTUM разработчики создали большое количество стандартных компонентов. При установлении программы в зависимости от потребностей самого предприятия можно отказаться от некоторых стандартных компонентов, а также имеется возможность разработать дополнительные модули, отвечающие тем или иным потребностям.
Система DIRECTUM имеет следующие преимущества перед многими подобными программами:
- внутри организации сокращается «хождение» бумажных документов;
- сокращается время на отыскивание документов;
- сокращаются затраты на покупки бумаги, краски для принтера и других расходных материалов;
- минимизируется риск потери документов;
- создается возможность контролировать движением электронных документов, т.е. всегда можно проверить на каком этапе находится, а также можно влиять на его движение.
В связи с вышеизложенным, введение электронной системы документооборота в современный бизнес является насущной необходимостью.
В данной работе разработана прикладная программа, направленная на повышение эффективности выполнения бизнес-процессов, связанных с вводом, регистрацией, согласованием и контролем исполнения заявок подразделений для системы электронного документооборота и управления взаимодействием DIRECTUM.
Функциональность способность системы электронного документооборота DIRECTUM зависит от установленных компонентов. В общей сложности в систему входить восемь модулей, которые расширяют те или иные возможности электронного документооборота и управления взаимодействием. Модуль «Управление электронными документами» обеспечивает поддержку большого количества операций с электронными документами:
- создание и хранение исходного документа;
- организация и контроль доступом к документу;
- использование шифрования и электронных цифровых подписей для защиты документа от изменений;
- организация поиска в документах по атрибутам и текстам;
- выполнение процесса протоколирования работы с документами.
Модуль «Управление деловыми процессами» позволяет автоматизировать согласование и обработку электронных документов, а также позволяет выдавать электронные задания и контроль исполнения этих заданий.
Модуль «Канцелярия» создает возможность работать с бумажными документами, а именно позволяет: регистрировать документы, контролировать местонахождение документа, списать документы в архив, ввести номенклатуру дел, организовать поиск документов по атрибутам.
Модуль «Управление совещаниями» позволяет проводить совещания. Здесь возможно обсуждение состава участников совещания, места и времени проведения, повестки. После совещания имеется возможность формирования и рассылка протокола, а также контроль исполнения решений.
Модуль «Управление взаимодействием с клиентами» используется для работы с информациями об организациях. В базе данных содержатся: история переписки между организациями, встреч с контактными лицами, сопровождение процесса продаж, планирование маркетинговых мероприятий и т.п.
Модуль «Управление договорами» позволяет автоматизировать регистрацию входящих и исходящих договоров, согласования этих договоров, визирования руководством. Модуль позволяет обеспечивать конфиденциальность информации, назначать ответственного за регистрацию договора. В «Управлении договорами» хранится вся информация по договорам.
В системе DIRECTUM имеется также модуль «Управление показателями эффективности», который автоматизирует работу с количественными оценками тех или иных процессов организации, а также позволяет разрабатывать алгоритмы получения оценок, в нем накапливается статистика. Вся информация отображается в виде графиков и диаграмм, таблиц.[2]
Структурно модули системы представляют собой наборы компонент различных типов. Компоненты имеют характерный интерфейс и наборы данных, определяемые их назначением. Вызов компонент осуществляется через проводник системы DIRECTUM, аналогичный по виду проводнику Windows.
Корпоративная система электронного документооборота и управления взаимодействием DIRECTUM построена с помощью встроенного предметно-ориентированного инструмента разработки IS-Builder (рис. 1).
IS-Builder является предметно-ориентированным инструментом для быстрой разработки корпоративных систем управления предприятием. Он позволяет осуществлять работу системы с большими объемами данных, в том числе на территориально распределенных объектах, а также включает в себя полный комплекс средств для управления предприятием, таких как учет, планирование, анализ, контроль.
IS-Builder является не только инструментом разработки, но и платформой (средой выполнения) для разрабатываемых на нем систем.[4]
Язык ISBL (IS-Builder Language) — встроенный в платформу IS-Builder высокоуровневый интерпретируемый язык программирования, на котором задаются все программные вычисления внутри систем, разработанных на этой платформе [3, 6, 14, 15]. Он предназначен для расширения функциональных возможностей системы DIRECTUM и настройки её под нужды конкретного предприятия. Кроме того, следует отметить, что среда Builder широко используется при решении научных прикладных задач [7-13].
В работе прикладная программа для системы электронного документооборота DIRECTUM разработана на базе предметно-ориентированной платформы IS-Builder с использованием встроенного языка программирования IS-Builder Language (ISBL). Программа предназначена для согласования и регистрации заявок подразделений конкретной организации.
Сначала создавался тип карточки электронного документа «Заявки» с информацией об адресате, отправителе, номере и сути заявки. Форма заявки должна иметь доступный интерфейс.
Для хранения информации о зарегистрированных заявках и учета сопутствующей документации создается справочник с аналогичным названием и функцией поиска связанных документов (рис. 2).
На закладке «Реквизиты» задаются реквизиты справочника. Они повторяют реквизиты карточки документа, только создается дополнительный реквизит для подсчета зарегистрированных заявок. Внутри закладки «Реквизиты» выполнена автоматизация заполнения полей «Содержание», «Наименование» посредством вычислений в реквизите «Вычисление».
Для автоматической регистрации заявок в справочнике создавалась функция, поддерживающая автоматическое заполнение записи справочника или карточки в зависимости от навигации документа, обработку повторной регистрации, а также проверку наличия прав у пользователя на регистрацию заявок. Функция также содержит подробную справку по своему использованию для облегчения дальнейшей работы с ней.
Для процесса согласования заявок использовался типовой маршрут. Порядок согласования следующий: руководитель подразделения автора заявки, ответственное за тему лицо (или группа лиц) из подразделения-адресата, руководитель подразделения-адресата. При этом право отказать в согласовании заявки имеют только руководители подразделений, остальные лица — ответственные — имеют право только указать свои замечания к заявке. Сам список ответственных лиц задается пользователем-инициатором перед стартом задачи.
Вывод
Таким образом, в работе средствами системы электронного документооборота DIRECTUM на основе предметно-ориентированной платформы IS-Builder с использованием встроенного языка программирования IS-Builder Language создано прикладное программное решение по согласованию и регистрации заявок подразделений, включающее в себя разработанный тип карточки электронного документа, справочник для хранения информации о заявках, типовой маршрут, а также функцию автоматической регистрации утвержденных заявок.
Читайте также
-
Сравнение языков программирования на примере сортировки массива
- Хусаинов И.Г.
-
Релаксация давления в сферической полости, окруженной насыщенной газом пористой средой, после взрыва
- Хусаинов И.Г.
-
Акустическое воздействие на призабойную зону пласта
- Хусаинов И.Г.
-
Динамика температурного поля вокруг цилиндрического тела после взрыва
- Хусаинов И.Г.
-
Затухание слабых волн в пористой среде, насыщенной газом
- Хусаинов И.Г.
Список литературы
- Компания DIRECTUM. Администрирование и настройка системы DIRECTUM. Учебное пособие для администраторов. –DIRECTUM, 2009. – 87 с
- Компания DIRECTUM. Использование базовых модулей системы DIRECTUM. Учебное пособие для пользователей. — DIRECTUM, 2009. – 100 с.
- Компания DIRECTUM. DIRECTUM. Использование модуля Канцелярия. Учебное пособие для пользователей. – DIRECTUM, 2009. – 54 c.
- Компания DIRECTUM. Модификация системы DIRECTUM с помощью IS-Builder. Учебное пособие для разработчиков. – DIRECTUM, 2009. – 131 с.
- Описание системы электронного документооборота и управления взаимодействием DIRECTUM // URL: http://www.directum.ru (дата обращения 25.01.16).
- Синицын A.К., Навроцкий А.А., Щербаков А.В. Программирование алгоритмов в среде Builder C++. — Мн.: БГУИР, 2014. — 92 с.
- Хусаинов И.Г., Рахимова Р.А. Роль интерактивных технологий на уроках информатики в развитии этического воспитания учащихся // Современные проблемы науки и образования. – 2015. – № 3. – С. 488.
- Хусаинов И.Г. Воздействие акустическим полем на насыщенную жидкостью пористую среду // Современные проблемы науки и образования. – 2014. – № 6; URL: http://www.science-education.ru/120-15160 (дата обращения: 31.10.2014).
- Хусаинов И.Г. Эволюция импульса давления при прохождении через пористую преграду, расположенную в воде // Фундаментальные исследования. – 2014. – № 11–12. – С. 2645-2649.
- Хусаинов И.Г., Хусаинова Г.Я. Компьютерное моделирование процесса релаксации давления в сферической полости после опрессовки // Успехи современного естествознания. — № 10. — 2016, — С. 167-170.
- Хусаинова Г.Я. Исследование температурных полей при стационарном течении аномальных жидкостей // Автоматизация. Современные технологии. 2016. № 7. С. 13-16.
- Хусаинова Г.Я. Моделирование процесса очистки пористой среды растворителями // Автоматизация. Современные технологии. 2015. № 9. С. 39-43.
- Хусаинова Г.Я. Плоскорадиальная фильтрация несжимаемой аномальной жидкости // Современная техника и технологии. 2015. № 7 (47). С. 81-83.
- Языки программирования // Википедия. Свободная энциклопедия.- 2016. URL: http://ru.wikipedia.org (дата обращения 20.04.16).
- Языки программирования // URL: http://cat.codenet.ru/Languages ( дата обращения 20.01.16).
Цитировать
Хусаинов, И.Г. Разработка программы согласования и регистрации заявок подразделений в системе Directum средствами языка Is-Builder Language / И.Г. Хусаинов. — Текст : электронный // NovaInfo, 2017. — № 64. — С. 50-56. — URL: https://novainfo.ru/article/12840 (дата обращения: 14.04.2023).
Поделиться
Главная страница » Word » Не запускается Microsoft Word: 3 проверенных способа исправить ошибку
Несмотря на множество аналогов, текстовый редактор Word все равно остается одним из самых популярных. Пользователи любят его за удобный и понятный функционал. Однако и такой популярный продукт не застрахован от различных сбоев в собственной работе или же в работе системы, особенно если эта система — Windows 10.
К счастью, по сравнению с другими ошибками, причин, по которым не запускается Microsoft Word не так много, а исправить их довольно легко.
Отсутствие лицензии
Как и многие продукты, этот набор приложений от Microsoft имеет свою лицензию. Зачастую у пользователей не возникает сложностей с оригинальной версией, однако ошибки в ее работе не исключены. Проверить наличие лицензии можно с помощью встроенной командной строки.
Этот метод сработает для программ, принадлежащих пакетам Office 365 и Office 2016.
Для начала откройте «Командную строку» и скопируйте в нее следующий текст: «cd “C:Program FilesMicrosoft OfficeOffice16”». Нажмите «Enter» на клавиатуре, чтобы подтвердить ввод. Вставьте команду: «cscript ospp.vbs /dstatus».
Дождитесь окончания загрузки и найдите строчку «LICENSE STATUS».
Если в одной строке с ней стоит «LICENSED», значит, ваша лицензия до сих пор действует, и проблемы в ней нет. В обратном случае вам предстоит приобрести лицензию заново, потому что истек срок ее действия. Если сроки все еще актуальны, то нужно обратиться в техподдержку Microsoft.
Запуск от имени администратора
Как правило, запуск от имени администратора позволяет решить вопрос с открытием большинства программ. Часто приложения начинают требовать этого из-за незначительных сбоев в системе.
Откройте меню «Пуск» и найдите в списке всех приложений «Word».
Нажмите на него правой кнопкой мыши и выберете пункт «Запуск от имени администратора». Если приложение открылось, то проблема была именно в этом. Обычно после такого запуска программы продолжают открываться без проблем, однако можно провести дополнительные настройки, которые окончательно исправят ошибку.
Чтобы это сделать, нужно снова кликнуть правой кнопкой мыши по этой программе в меню «Пуск», но в этом случае выбрать «Перейти к расположению файла».
В появившемся списке снова найдите «Word», нажмите правой кнопкой мыши и выберите строку «Свойства». Найдите строку «Объект» и отмотайте до конца поля. Добавьте: «/r» в конце. Нажмите сначала «Применить», а потом «Ок».
Исправление ошибок
Этот способ подойдет в том случае, если все остальные варианты не дали результата. Вам потребуется произвести полное восстановление всех программ из пакета Office.
Для этого откройте окно «Выполнить» с помощью комбинации клавиш «Win+R».
Введите в строку «appwiz.cpl» и нажмите «Ок». В появившемся списке программ найдите «Microsoft Office» (в некоторых случаях возможно наличие программы «Microsoft Word» отдельно). Нажмите на него, а затем на кнопку «Изменить».
В открывшемся окне выберите «Восстановить» и нажмите «Продолжить».
Дождитесь завершения загрузки настроек. После этого проблема с включением Word должна быть полностью решена. Теперь вы сможете самостоятельно решить проблему с запуском программы Microsoft Word. Как видите, все эти способы простые и не затратят много времени.
- Распечатать
Оцените статью:
- 5
- 4
- 3
- 2
- 1
(23 голоса, среднее: 2.3 из 5)
Поделитесь с друзьями!
For PeopleSoft XML reports, we usually add the BI Publisher plug-in to MS Word, load the XML files, create RTF templates and the list goes on.
When you download and install the BI Publisher from PeopleSoft (Design Helper), at first load of Microsoft Word 2016, the BI Publisher tab should appear in the ribbon. If it doesn’t, it means either the add-in is restricted, disabled or does not work. Office 2016 isn’t certified yet to be used with Oracle BI Publisher, but there’s a workaround. Provided below are multiple steps that you can follow to get this issue resolved and have the BI Publisher tab appear permanently in Microsoft Word 2016.
For reference purposes, here are the details of my environment:
Windows 10 Home 64-bit
Microsoft Office 2016 32-bit
PeopleSoft HCM 9.2
PeopleTools 8.55.01
Step 1 : To find out which version of Office 2016 you have installed, open up an instance of Word 2016, File > Account > About Word
Step 2 : Download and install BI Publisher from Design Helper
Navigation : Main Menu > Reporting Tools > BI Publisher > Setup > Design Helper
Choose the setup file appropriate to your version of Microsoft Word 2016 (either 32/64-bit) and download the same
Step 3 : Before starting with the installation, ensure all instances of Microsoft Word have been closed. If you’re on a remote desktop, ensure that all instances of Word have been closed by all users who have logged on to the server.
Step 4 : Once the installation is complete, search for Enable or Disable Template Builder from the installed programs list in Windows
Step 5 : Click on Enable or Disable Template Builder
Step 6 : Click OK
Click on Button 1
And you’re done!
Open up an instance of Word 2016 and see if the BI Publisher tab appears in the ribbon. Ensure the BI Publisher tab does not disappear by opening Word 2016 couple of times.
If it doesn’t appear at all or disappears if you open Word 2016 after a while, try the following:
Step 7 : Go to File > Options > Trust Center
Step 8 : Click on Trust Center settings
Step 9 : Ensure that the settings are the same as in the screenshot provided below:
Step 10 : Click on ActiveX settings and ensure that the settings are the same as in the screenshot provided below:
Step 1 1: Click on Add-ins and ensure that the settings are the same as in the screenshot provided below:
Step 12: Click on OK and then select Add-ins from the Word Options dialog
Step 13 : Check if BI Publisher Template Builder for Word is listed under Inactive Application Add-ins
Step 14 : Select it and at the bottom of the dialog, select COM Add-ins and click on the Go button
Step 15 : In the COM Add-ins dialog that appears, select the BI Publisher Template Builder for Word checkbox and ensure that the Load Behavior is Load at Startup and not Unloaded.
Click on OK to close the dialog. Close the Word 2016 instance and open a new instance. The BI Publisher tab should appear in the ribbon.
If it still doesn’t appear in the ribbon, repeat Step 15 again. Ensure that the Load Behavior is not Unloaded. If the Load Behavior has been reset or if the checkbox has been cleared, please follow the steps provided below.
Step 16 : Ensure that you have Administrator permissions to your system.
Step 17 : Open the run prompt – Windows + R and type regedit
Step 18 : Look at the following two registry entries:
HKEY_CURRENT_USERSOFTWAREMicrosoftOfficeWordAddinsTBAddIn
HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeMicrosoftOfficeWordAddinsTBAddIn
Step 19 : Look for the DWORD value named LoadBehavior
Step 20 : Double click on LoadBehavior and set its value to 3 for both Registry paths provided above
Step 21 : Click on OK and exit the Registry Editor. Open the Registry again and ensure that the value has not been overwritten.
Go to step 15 again and ensure that the COM add-in is checked. Close and restart the Word 2016 instance again and see if the BI Publisher tab appears in the ribbon. The BI Publisher add-in will now appear in the Active add-ins list.
Hopefully all these steps should resolve this issue.
Please add any questions that you may have in the comments section.
Hope this helps! 🙂
Время на прочтение
14 мин
Количество просмотров 13K
VSTO расшифровывается как Visual Studio Tools for Office. Эти средства позволяют довольно легко скрещивать ужа с ежом — писать .NET приложения, исполняемые CLR в среде Microsoft Office. В частности, программисты обладают возможностью создавать подключаемые модули (плагины) и «кастомизированные» шаблоны для документов почти ко всему основному семейству продуктов Microsoft Office.
В статье приведена инфраструктура Windows Forms проекта, в котором Microsoft Word воспринимается приложением в качестве шелла. В статье раскрыты несколько интересных моментов использования Composite UI Application Block, в частности подключение инфраструктуры доменной модели Word в сервисам расширения каркаса, а так же приведены некоторые факты и особенности разработки с использованием средств VSTO.
Задача
Предположим, у нас есть несколько десятков людей, которые пишут документы и постоянно работают с их редакциями. Sharepoint и другие порталы по каким-то причинам не подходят, поэтому требуется реализация собственной бизнес-логики. Усложним задачу — люди работают в области, очень далекой от компьютерной тематики и хорошо знают только пакет Microsoft Office. Еще усложним — контора бедная, Microsoft Office у большинства народа версии 2003-ей. Кое где, у больших начальников и Главного босса стоит 2007ой. Парк машин разнородный — начиная от 2000-ой винды и до Windows Vista.
Решение
Одним из решений является плагин для Microsoft Office. Его можно написать на COM-е, через голый Office Interop, или же через такой же интероп, но по хитрому обернутый в средства VSTO. Эти средства и задействуем. Пользователь будет запускать Word, среда исполнения VSTO будет подцеплять сборки .NET и каким-то образом дополнять элементы управления Microsoft Word, позволяя пользователю выполнить нужную в задаче бизнес-логику.
А к чему все это?
(Это кому не терпиться узнать, чем все закончится). На выходе я выложу Visual Studio solution, который позволит в полпинка создать свое приложение, подключаемое в Microsoft Word. По ходу дела я объясню практически все, что и как в этом солюшене используется.
Что потребуется для работы
- Microsoft Word 2003 SP3
- VSTO 2005 SE
- VSTO 2005 SE Runtime
- CAB
- Visual Studio 2005 или 2008
Зачем CAB?
Для того, чтобы определить явное разделение функционала, связанного с Microsoft Word от простой Windows Forms логики. Проще говоря, наш плагин будет являться модулем CAB, и при желании, мы легко сможем подключить эту логику в другие приложения CAB. Еще проще говоря, использование CAB минимизирует количество glue-кода.
Есть еще две причины, по которым я включил CAB в решение. Первая состоит в том, что я уже давал описание этого каркаса здесь, а теперь хочу привести полноценный работающий пример. Вторая причина более банальная — мне нравится CAB, он делает мир и вещи в нем проще:)
Подробнее про VSTO
Вообще говоря, VSTO не только плагины для Word-а умеет создавать. Это мощная система, сейчас она уже есть в третьей версии. VSTO — это врата для разработчика в мир автоматизации и программирования Office-based решений. В двух словах — разработчик .NET получает доступ к доменной модели приложения Office и делает с ней что хочет.
Все эти решения можно разделить на два типа:
- Уровень документа (Document Level Customization)
- Уровень приложения (Application Level Customization)
Это независимые уровни. На первом создаются шаблоны документов для приложений Microsoft Office. Можно взять шаблон Excel, разнообразить его разными пользовательскими элементами управлениями (кнопками, гридами), и добавить всякую логику — например, чтобы по событию нажатия кнопки собранные пользователем данные отправлялись через веб-сервис на какой-то сервер и обрабатывались там. На этом уровне разработчику доступен Action Pane (в 2003-ей версии), куда можно подключать свои элементы управления, плюс еще очень много всего в 2007-ой версии.
Application Level Customization означает то, что в среду приложения Microsoft Office подключается модуль расширения (т.н. add-in). Собственно, про него я изначально и начал говорить. Этот модуль расширения является локомотивом бизнес-приложения и позволяет подключать в Microsoft Office все возможности платформы .NET. Я буду показывать именно решение второго уровня.
Если кто заинтересовался возможностями VSTO — очень много про них есть в msdn.
Псевдозадача
Создадим маленький пример, иллюстрирующий все вышесказанное. Пусть есть требование, согласно которому пользователь может выделять текст из документа Microsoft Word и получать этот выделенный текст в окошке пользовательского элемента (знаю, дурацкий пример, но более сложного делать не хочется, а менее сложный уже трудно придумать).
Более подробно. Пользователь запускает Microsoft Word. После запуска среди тулбаров пользователю будет доступен ТР — тулбар расширения (т.е., нашего расширения). На нем находится кнопка, по нажатию которой пользователю показывется окно с кнопкой «Получить текст» и элементом управления multiline textbox. Пользователь нажимает на кнопку «Получить текст», выделенный в документе текст копируется в textbox. Все счастливы.
Понятно, что для жизни пример малопригоден. Но создаваемая инфраструктура позволит довольно просто нарастить на него «мускулы», если это, конечно, кому-то потребуется.
Создание solution
После установки VSTO в студии при создании нового solution станут доступны Office проекты:
Будьте аккуратны с названием — оно одновременно будет являться названием root namespace и поменять его можно будет только ручками через выгрузку проекта.
На выходе получается солюшен с двумя проектами:
WordCAB — это, собственно, add-in. Второй — не менее важный, это deployment проект для модуля расширения. Почему он важен?
Дело в том, что установка модуля расширения на рабочие станции пользователей — весьма трудоемкая затея. Она заключается не только в том, чтобы просто скопировать библиотеки в нужную папку. Для успешного фукнционирования модуля требуется прописать кучу ключей в реестр. Если копнуть глубже, получается, что модуль расширения подключается к Microsoft Office как COM-библиотека, со всеми вытекающими. Кому интересно, все нужные ключи реестра можно поглядеть в deployment-проекте (Нажать правой кнопкой, View->Registry).
В классе ThisAddIn находится точка доступа в модуль:
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
new AddInApplication().Run();
}private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}#region VSTO generated code/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}#endregion
}* This source code was highlighted with Source Code Highlighter.
В ThisAddIn_Startup
будем писать код. Если быть точнее, будем запускать CAB-приложение.
Что такое CAB-приложение?
Это класс такой. В нем есть точка запуска — метод Run()
, и некоторая инфраструктура каркаса — в частности, имеются доступ к главному прецеденту «Приложение» (т.е., к основному, рутовому WorkItem) и возможности переопределить системные сервисы, добавляемые в приложения по-умолчанию. Этот класс уже реализован в базовом виде, а программисту требуется параметризировать его — указать тип рутового прецедента и тип главной формы:
internal sealed class AddInApplication : WindowsFormsApplication<AddInWorkItem, object>
{
protected override void Start()
{
}
}* This source code was highlighted with Source Code Highlighter.
В качестве типа главной формы (шелловой формы), указан object. Почему? Потому что приложение запускается в Microsoft Word, поэтому необходимости создавать главную форму нет. Форма Microsoft Word и есть главная форма, правда, без традиционных для нее возможностей.
По ходу пьесы мне пришло в голову немного прояснить модель приложения для модуля расширения в Microsoft Word.
Модель приложения Word Add-in
Итак, пользователь работает с документами. Более того, в единицу времени он может работать только с одним документом. Поэтому модуль расширения имеет четкий контекст — текущий открытый документ. (Кстати, в модели Microsoft Word VSTO этот документ обозначен как Globals.ThisAddIn.Application.ActiveDocument
). Отсюда (я сделал) вывод (или упрощение) — показывать пользовательские бизнес-элементы имеет смысл в модальном режиме, поскольку в ином случае нарушается контекст. Элементы управления, открытые для одного документа, должны существовать только во время активности этого документа.
Пример — пользователь открыл документ и открыл его карточку (не в модальном режиме). Переключился на другой документ, а карточка осталась для предыдущего — нарушение контекста и целостности восприятия. Разумеется, подобное поведение контролировать можно (и даже нужно, в некоторых случаях), но модальность элементов управления и жесткая их привязка к текущему активному документу делает жизнь проще.
Modal Workspace
Пользовательские элементы управления в каркасе CAB показываются в специальных так называемых рабочих зонах (Workspace). Согласно описанному выше поведению, нам требуется показывать элементы управления в модальном режиме. Поскольку родной CAB-овский WindowWorkspace оказался дубоват и выглядит некрасиво, я написал простенький свой — приводить код не буду, потому что его пара-тройка экранов. Насладиться творчеством можно скачав solution с кодом (ссылка на архив приведена в конце статьи).
Регистрация модальной рабочей зоны происходит в методе InitializeServices()
главного прецедента — AddInWorkitem
:
Workspaces.Add(( new SimpleModalWorkspace() ), WorkspaceNames.MainWorkspace);* This source code was highlighted with Source Code Highlighter.
Итого: под ключем-идентификатором WorkspaceNames.MainWorkspace
зарегистрировали модальную рабочую зону. Доступиться до нее теперь можно откуда угодно, где есть ссылка на главный прецедент: запрос интерфейса IWorkspace
из коллекции Workspaces
по указанному выше ключу. Все просто, как апельсин! (с) х/ф «Терминатор 2»
Фабрика элементов управления Microsoft Word
Речь пойдет о тулбаре Word и кнопках на нем. В VSTO это обертки над COM-объектами — CommandBar
и CommandBarButton
из пространства имен Microsoft.Office.Core
. Жутко глючные штуки, если честно, особенно их анимация. Понять все тонкости и детали удалось только после ударного троллинга на форумах VSTO.
В чем идея — идея состоит в том, чтобы избавить программиста и разработчиков бизнес-модулей от необходимости работать с COM-обертками. Для этого, мы (то есть, я) интегрируем модель Misrosoft Word в механизм так называемых мест расширения (UiExtensionSite) каркаса CAB.
Механизм мест расширения состоит из функциональных связок-добавлений. Проще говоря, в коде необходимо визуализировать отношения подчиненных элементов. В нашем случае, эти отношения такие:
- В массив тулбаров Microsoft Word вставляется тулбар
- В коллекцию кнопок на тулбаре вставляется кнопка
- В кнопку уже ничего не вставляется (не рассматриваем случае комбобоксов, хотя они присутствуют), поэтому это терминальный объект
Итого, у нас получились три подчиненные друг другу сущности:
IWordCommandBarContainer
— контейнер тулбаров Microsoft WordIWordCommandBar
— контейнер кнопок на тулбареIWordButton
— кнопка
К слову сказать, помимо определения элементов управления Word конкретные типы интерфейсов IWordCommandBar
и IWordButton
являются адаптерами к упомянутым выше CommandBar
и CommandBarButton
соответственно.
Для того, чтобы каркас понял, что, куда и, главное, каким образом вставлять, ему необходимо зарегистировать фабрику адаптеров для пользовательских элементов управления. В нашем случае, вставлять можно тулбары (в коллекцию тулбаров) и кнопки (в коллекцию кнопкок на тулбаре). Поэтому, регистрировать фабрику адаптеров нужно для IWordCommandBarContainer
и для IWordCommandBar
. Потом, когда пользователь будет получать место расширения, каркас будет искать инстансы классов добавления подчиненных элементов для этого места расширения, после чего использовать их по назначению — добавлять элементы. Ну а чтобы не заморачиваться, эти инстансы порождаются фабрикой:
public class CommandBarUIAdapterFactory : IUIElementAdapterFactory
{
public IUIElementAdapter GetAdapter(object uiElement)
{
if ( uiElement is IWordCommandBarContainer ) //тулбары
return new CommandBarUIAdapter(( IWordCommandBarContainer )uiElement);
if ( uiElement is IWordCommandBar ) //кнопки в тулбарах
return new CommandBarButtonUIAdapter(( IWordCommandBar )uiElement);throw new ArgumentException("uiElement");
}public bool Supports(object uiElement)
{
return ( uiElement is IWordCommandBarContainer ) || ( uiElement is IWordCommandBar );
}
}* This source code was highlighted with Source Code Highlighter.
А вот реализация коллекции тулбаров (с возможностью добавить новый!)
internal class BarCollection : IWordCommandBarContainer
{
#region IWordCommandBarContainer Memberspublic void AddBar(IWordCommandBar bar)
{
CommandBar commandBar = null;
//todo: сделать так, чтобы второй раз создать нельзя было
try
{
commandBar = Globals.ThisAddIn.Application.CommandBars[bar.Id];
}
catch ( ArgumentException ) { }if ( commandBar == null )
commandBar = Globals.ThisAddIn.Application.CommandBars.Add(bar.Id, ( object )MsoBarPosition.msoBarTop, _null, true);commandBar.Visible =
true;
}private object _null = System.Reflection.Missing.Value;#endregion
}* This source code was highlighted with Source Code Highlighter.
С кнопками на тулбарах аналогично. Гляньте код на досуге.
Пришлось, к слову, создавать фабрику самих кнопкок и тулбаров (см. IWordUIElementFactory
). Дело в том, что модули CAB работают с интерфейсами IWordCommandBar
и IWordButton
. Конкретные типы этих интерфейсов находятся в сборке VSTO Word-AddIn и завязаны на Microsoft.Office.Core
. Поэтому, чтобы в модулях (где отсутствует ссылка на Office) была возможность получать инстансы указанных элементов, создается фабрика. Она регистрируется в главном WorkItem.
Регистрация фабрик и места расширения под тулбары:
Services.AddNew<WordUIElementFactory, IWordUIElementFactory>();
IUIElementAdapterFactoryCatalog factoryService = base.Services.Get<IUIElementAdapterFactoryCatalog>();
factoryService.RegisterFactory(new CommandBarUIAdapterFactory());UIExtensionSites.RegisterSite(UIExtensionSiteNames.WordBarsSite,
new BarCollection());* This source code was highlighted with Source Code Highlighter.
Если вы запутались, извините:) Я сам понимаю, что тут без поллитры не разберешься. (Если подебажиться, то многое становится понятным.)
Модуль CAB
Это обычная сборка. В ней должен быть класс ModuleInit
. В этом классе есть ссылка на главный прецедент AddInWorkitem
и, как следствие, есть доступ ко всему добру, про которое я писал выше.
Задача модуля CAB такова — подгрузиться к главному преценденту, вставить тулбар, вставить кнопку на него, описать обработчик кнопки:
Voila:
UIExtensionSite site = _rootWorkItem.UIExtensionSites[UIExtensionSiteNames.WordBarsSite];
IWordCommandBar mainBar = site.Add<IWordCommandBar>(_factory.CreateBar("AddInToolbar"));IWordButton btn = _factory.CreateButton(mainBar, CommandNames.OpenForm, ToolStripItemDisplayStyle.ImageAndText,
"Открыть окно",
"Открыть форму просмотра Custom Control", Resources.OpenForm, false);mainBar.AddButton(btn);
btn.Click +=new EventHandler<WordButtonClickArgs>(ButtonClick);* This source code was highlighted with Source Code Highlighter.
Обработчик кнопки будет создавать пользовательское окно с кнопкой «получить текст» и текстовым полем, после чего показывать его (применив специальный модификатор показа WindowSmartPartInfo
) в ранее упомянутой рабочей зоне (которую, как мы помним, я зарегистрировал в прецеденте под ключем WorkspaceNames.MainWorkspace
):
private void ButtonClick(object sender, WordButtonClickArgs e)
{
object smartPart = _rootWorkItem.SmartParts.AddNew<SampleSmartPart>();
WindowSmartPartInfo info = new WindowSmartPartInfo();
info.FormStartPosition = FormStartPosition.CenterScreen;
info.MaximizeBox = false;
info.MinimizeBox = false;
info.Resizable = false;
info.Title = "Custom Control";
info.ShowInTaskbar = false;
_rootWorkItem.Workspaces[WorkspaceNames.MainWorkspace].Show(smartPart, info);
}* This source code was highlighted with Source Code Highlighter.
Подгрузка модуля
Здесь я сделал финт коленом. Обычно модули подгружаются в каркас через специальный декларативный формат подгрузки — так называемый ProfileCatalog. Обычно, это хороший способ подключить все, что нужно. Но, учитывая суровые советские реалии, имеется ненулевая вероятность того, что программисту потребуется недекларативная логика подключения модуля. Для этого мы будем переопределять специальный сервис перечисления подгружаемых модулей — IModuleEnumerator
. Я сделал его очень простым — он глядит в папку исполняемой сборки и ищет в ней модуль под названием CustomModule.dll. Находит, и подгружает. Ну, или не подгружает, если не находит:
public class CustomModuleEnumerator : IModuleEnumerator
{
#region Constants
private const string ModuleName = "CustomModule.dll";
#endregion#region IModuleEnumerator Memberspublic IModuleInfo[] EnumerateModules()
{
List<IModuleInfo> result = new List<IModuleInfo>();string path = GetModulePath(ModuleName);
if ( File.Exists(path) )
result.Add(new ModuleInfo(ModuleName));
return result.ToArray();
}#endregion#region Private Methods
private string GetModulePath(string assemblyFile)
{
if ( !Path.IsPathRooted(assemblyFile) )
assemblyFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, assemblyFile);return assemblyFile;
}
#endregion
}* This source code was highlighted with Source Code Highlighter.
Сейчас эта служба очень простая, но при желании, разумеется, в нее можно нагородить хоть черта лысого. Например, подгружать модули из базы данных:)
Перегрузить эту службу нужно в классе приложения CAB:
protected override void AddServices()
{
base.AddServices();RootWorkItem.Services.Remove<IModuleEnumerator>();
RootWorkItem.Services.AddOnDemand<CustomModuleEnumerator, IModuleEnumerator>();
}* This source code was highlighted with Source Code Highlighter.
Доктор, я устал. Что получилось?
Получилось то, что задумывалось в изначальном псевдопримере:
В тулбарах Microsoft находится наш тулбар, на нем висит кнопка с иконкой, по событию нажатия кнопки вылезает пользовательский элемент управления, в текстовое поле которого с помощью кнопки можно загнать выделенный в документе текст:) Тривиально, но обратите внимание, как ничтожна связность между объектами! Хочется подметить, что у каркаса, при должном обращении, идеальная code maintainability.
Внимание! Подводные камни!
Security
Когда скомпилируете и запустите пример, ничего не запустится. Более того, вывалится сообщение, которое скажет вам — дескать, не хватает прав на запуск стороннего модуля (в нашем случае, CustomModule.dll). Проблема в том, что по умолчанию приложение VSTO (в режиме разработки!) дает Full Trust права только на исполняемую сборку и на все сборки, от которых она зависит — т.е. на WordCAB.dll. Для того, чтобы разрешить использование кода сторонних библиотек, выполните следующее действие:
C:WindowsMicrosoft.NETFrameworkv2.0.50727>caspol -u -ag All_Code -url "D:ProjectsWordCABbinDebug*" FullTrust
Microsoft (R) .NET Framework CasPol 2.0.50727.3053
Copyright (c) Microsoft Corporation. All rights reserved.
The operation you are performing will alter security policy.
Are you sure you want to perform this operation? (yes/no)
yes
Added union code group with "-url" membership condition to the User level.
Success
Вместо "D:ProjectsWordCABbinDebug*"
нужно указать папку, из которой производится запуск Add-in. Не забудьте про звездочку.
Add-in перестал загружаться!
Иногда, когда в модуле возникает необработанный Exception, Word блокирует исполнение этого модуля при следующей загрузке. Зайдите Help->About->Disabled Items и посмотрите, нет ли в списке вашего расширения. Если есть, уберите его оттуда. При следующем Run-Debug он появится.
Как убрать
Удаление расширения не такое тривиальное. Вытащите кнопку COM-AddIns на тулбар Microsoft Word. Для этого надо зайти в Tools->Customize->Tools->(Drag’n’Drop)COM-AddIns. Кликните на нее и снимите галку с вашего расширения. Он выгрузится. Чтобы заново подгружать, наоборот, выставите галку обратно. Другой способ — зайти в панель управления и удалить из программ.
А что с Word 2007?
Add-in замечательно подгружается в Ribbon на последнюю вкладку.
Там еще кучка мелких подводных камней. Но я тут и так уже настолько много написал, что не уверен, что кто-нибудь до конца дочитает:)
Где взять код
github.com/head-thrash/VSTO-CAB
Выводы
В общем, можно взять VSTO, Microsoft Office 2003, .NET Framework 2.0 и сделать решение. Базовое решение, на которое можно нарастить функционал, я привел в этой статье. Кто хочет — пользуйтесь на здоровье. Буду рад ответить на вопросы и подправить неточности, если здесь такие будут. Спасибо огромное за внимание!