Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


О Notes

Главная   Библиотека   О Notes

Microsoft Office и Lotus Notes. Часть 2

Андрей Черепанов, Красноярск
Предыдущая часть.>>>

Word.Application
С выпуском MS Office 97, компания Microsoft добавила в свои продукты новый язык управления приложениями. Это объектно-ориентированный Visual Basic. Теперь все элементы MS Word, как то документ, абзац, таблица и т.п., стали доступны как объекты Visual Basic. Всю объектную модель можно посмотреть в справке по языку Visual Basic, входящей в состав поставки MS Office и MS Word (при установке необходимо выбрать опцию установки соответствующей справочной системы).

Доступ к объектам MS Word посредством COM(Component Object Model Interface) осуществляется через COM-объект Word.Application:

Set wObj = CreateObject("Word.Application") ' Запускаем MSWord

После инициализации объекта появляется возможность оперировать его свойствами и использовать его методы, согласно объектной модели Visual Basic. Использование VB класса Word.Application дает гораздо большие возможности управления всем приложением, чем Word.Basic. Если проводить аналогию с Lotus Notes, то Word.Basic - это @-функции и @-команды, а Word.Application - это LotusScript.

При использовании Word.Application необходимо так же учитывать, что с выпуском более новых версий MS Word объектная модель развивалась, и поэтому не все возможности MS Word XP будут работать в MS Word 97. Поэтому будьте внимательны, и разрабатывайте приложения с использованием MS Word 97. В 99.99% случаев весь написанный вами код будет работать и на более поздних версиях (0.01% оставим на совести Microsoft).

Теперь о том, как можно формировать документы, работая с объектом Word.Application. Применимы два подхода для формирования документов: создание документа «с нуля» и использование шаблона документа. И у первого, и у второго способа есть свои достоинства и свои недостатки.

Формирование нового документа

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

Пример формирования документа:

%Include "wdConst.lss" ’ Подключение файла описания констант MS Word,
' разместите файл wdConst.lss (Скачать>>>) из приложения к статье в каталог программ Notes
' при отличном от этого размещения пропишите полный путь к файлу

Sub Initialize
Set wObj = CreateObject("Word.Application") ' Запуск приложения MS Word
wObj.Visible = True 'визуализация приложения
wObj.Application.WindowState = wdWindowStateMaximize ' во весь экран
wObj.Application.WindowState = wdWindowStateMinimize ' минимизация окна приложения

With wObj
.Documents.Add ' новый документ
With .ActiveDocument.PageSetup ' настройка параметров страницы
.Orientation = wdOrientPortrait
.TopMargin = CentimetersToPoints(2.5)
.BottomMargin = CentimetersToPoints(2.5)
.LeftMargin = CentimetersToPoints(2.5)
.RightMargin = CentimetersToPoints(2.5)
End With
.Selection.TypeText "Текст" ' начало формирования документа
.Selection.TypeParagraph ' абзац
With .Selection.Font ' установка параметров шрифта
.Name = "Arial"
.Size = 12
.Bold = False
.Italic = False
.Underline = wdUnderlineNone
.Color = wdColorAutomatic
End With
.Selection.TypeText "Вывод шрифтом Arial, размер 12, "
.Selection.Font.Bold = wdToggle ' жирное начертание
.Selection.TypeText "фрагмент текста полужирным шрифтом"
.Selection.TypeParagraph
.ActiveDocument.Tables.Add .Selection.Range, 1, 4 ' вставка таблицы
' установка размеров столбцов
.Selection.Tables(1).Columns(1).SetWidth 87.3, wdAdjustNone
.Selection.Tables(1).Columns(2).SetWidth 144.3, wdAdjustNone
.Selection.Tables(1).Columns(3).SetWidth 81.9, wdAdjustNone
.Selection.Tables(1).Columns(4).SetWidth 191.1, wdAdjustNone
' установка границ ячейки таблицы
.Selection.Borders(wdBorderTop).LineStyle = 1
.Selection.Borders(wdBorderLeft).LineStyle = 1
.Selection.Borders(wdBorderBottom).LineStyle = 1
.Selection.Borders(wdBorderRight).LineStyle = 1
' вывод текста в таблицу
.Selection.TypeText "первый столбец"
.Selection.MoveRight wdCell ' переход к следующему столбцу
' установка стиля границы ячейки таблицы - "невидимая" граница
.Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
.Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
.Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
.Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
.Selection.TypeText "второй столбец, невидимая граница"
.Selection.MoveRight wdCell
.Selection.TypeText "третий столбец"
.Selection.MoveRight wdCell
.Selection.TypeText "четвертый столбец"
.Selection.MoveRight wdCell
.Selection.TypeText "переход на новую строку"
.Selection.Rows.Delete ' удаление строки
.Selection.TypeText "после удаления строки - выход из таблицы"
.Selection.TypeParagraph
End With
wObj.Application.WindowState = wdWindowStateMaximize ' приложение во весь экран
End Sub
Function CentimetersToPoints(i As Currency) As Single
‘функция перевода сантиметров во внутренние единицы MS Word
‘встречается при автоматическом формировании макроса в MS Word
CentimetersToPoints = 28.34646 * i
End Function

Формирование документа на основе шаблона

Этот метод использует уже имеющийся документ-шаблон. Предварительно создается документ с надлежащим оформлением неизменных областей, в то время как в части документа, формирующиеся в зависимости от контекста, добавляется объект Закладки (в MS Word для выделенного текста, используя команду Главного меню Вставка -> Закладка). При формировании документа нужно будет позиционироваться на эти закладки и выводить информацию в заранее отмеченные области:

' TmpDocName – путь на диске к документу-шаблону
' bookmark01 – имя закладки определенной в MS Word
wObj.Documents.Add TmpDocName ' работа с шаблоном (открытие файла)
wObj.Selection.GoTo wdGoToBookmark, , , bookmark01 'переход к закладке
wObj.Selection.Delete wdCharacter, 1 ' удаление закладки и текста закладки, курсор остается на месте закладки
wObj.Selection.TypeText doc.ResultField(0) ' вывод информации в текущую позицию курсора
При этом можно очень гибко оперировать с закладками, например, закладкой можно сделать целую таблицу, внутри которой имеются еще закладки. После позиционирования на закладке таблицы, можно скопировать ее в буфер обмена, а дальше разместить в документе несколько однотипных таблиц, просто вставляя их из буфера в нужное место. Правда, необходимо помнить, что прежде чем вставить таблицу, содержащую закладки, в предыдущей таблице эти закладки нужно удалить. А так же всегда нужно учитывать, что во время формирования документа пользователь может параллельно работать с буфером обмена и тем самым уничтожить размножаемый фрагмент текста.

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

Каким и когда способом пользоваться, следует решать по месту и в соответствии с конкретной задачей. Можно рассмотреть вариант и комбинирования обоих методов.

Нужно заметить, что при формировании макроса Word.Application в приложении MS Word (подобно описанному в первой части >>>), требуется несколько дольше адаптировать полученный код к LotusScript, чем при рассмотренном выше переносе макроса Word.Basic, хотя, возможно, это субъективное мнение.


Excel.Application

По мимо MS Word в состав MS Office входит и ряд других приложений. Одним из часто используемых приложений для формирования документов является MS Excel (пожалуй, он занимает почетное второе место после MS Word). Так же, как и в случае с MS Word, Вы можете получить доступ к управлению формированием документа через COM-интерфейс:

Set xlObj = CreateObject("Excel.Application")
If Isnull(xlObj) Then ' если не удалось получить объект - завершение процедуры
Messagebox "Не удается создать 'книгу'."
Exit Sub
End If

Получив доступ к COM-объекту, можно оперировать с содержимым документа.

Пример:

Const DocTemplate = "Report.xls" ' название файла-шаблона

'Некоторые константы Excel
'---------------------------------------
Const xlNone=-4142
Const xlTop=-4160
Const xlBottom=-4107
Const xlDiagonalDown=5
Const xlRight=-4152
Const xlLeft=-4131
Const xlDiagonalUp=6
Const xlContinuous=1
Const xlThin=2
Const xlAutomatic=-4105
Const xlEdgeLeft=7
Const xlEdgeTop=8
Const xlEdgeBottom=9
Const xlEdgeRight=10
Const xlInsideVertical=11
Const xlInsideHorizontal=12
Const xlGeneral=1
Const xlCenterAcrossSelection=7
Const xlJustify=-4130
Const xlFill=5
Const xlCenter=-4108
Const xlPrintNoComments=-4142
Const xlPortrait=1
Const xlPaperA4=9
Const xlDownThenOver=1
Const xlUnderlineStyleNone=-4142
Const xlSolid=1
Const xlLandscape=2
Const xlNormal=-4143

Sub Initialize
Set xlObj = CreateObject("Excel.Application") '
If Isnull(xlObj) Then ' если не удалось получить объект - завершение процедуры
Messagebox "Не удается создать 'книгу'."
Exit Sub
End If
With xlObj
.Visible = True ' визуализация приложения

'.WorkBooks.Add(TmpDocName) ' можно открыть сохраненный ранее документ
.Workbooks.Add ' либо формировать документ "с нуля"
.ActiveCell.FormulaR1C1 = "qwerty" ' Вывод в текущую ячейку
.Range("B1").Select ' переход к ячейке B1
' прорисовка границ ячейки
.Selection.Borders(xlDiagonalDown).LineStyle = xlNone
.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With .Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With .Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
.ActiveCell.FormulaR1C1 = "123456" ' вывод информацию
End With
End Sub
Таким образом, можно формировать любой документ в MS Excel: управлять выводом информации, изменять формат ячеек/строк/столбцов, задавать формулы, управлять листами. О том, при помощи каких классов объектов и их функций достичь желаемого результата, можно узнать из соответствующей справочной системы (при установке MS Office необходимо указать опцию установки справки по Visual Basic для MS Excel) либо изучая записанные макросы в MS Excel.

Вы так же, как и в случае с документом MS Word, можете либо полностью формировать документ «с нуля», либо использовать файл-шаблон, но позиционируясь по ячейкам, а не по закладкам.

Заключение

Приведенные примеры являются лишь частными случаями и служат для демонстрации возможностей разработчиков Lotus Notes. Для расширения своих познаний в данной области следует обратиться к поставляемой в комплекте с Microsoft Office справочной системе, включающей в себя сведения о классах и объектах VB. В дополнение можно использовать "запись" макроса, с дальнейшим анализом генерируемого кода.

В прилагаемом файле содержатся объявления констант для работы с MS Word (это отнюдь не полный перечень, но в большинстве случаев его хватает с избытком). Разместите файл в каталоге программ Notes и включайте в проект директивой %Include "wdConst.lss". При размещении в любом другом каталоге необходимо прописать полный путь к файлу.

Предыдущая часть.>>>

Читайте также на Notesnet.ru материал Расширяем возможности разработки в среде Lotus Notes при помощи Windows Script Host >>>

Читайте на developerWorks Россия материал Использование LotusScript и средств автоматизации для интеграции IBM Lotus Notes с Microsoft Office >>>
 
  Опубликовано — 12/22/2003 |    
Вложенные файлы:
    Скачать файл wdConst.lss



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU