Lotus notes выгрузка в excel

Обновлено: 07.07.2024

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 и суровыми администраторами). Недостатком этого метода является то, что при смене формы выходного документа приходится модифицировать программный код, отвечающий за формирование документа. Этот метод хорош в тех случаях, где четко известна форма документа и она статична.

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

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. В дополнение можно использовать "запись" макроса, с дальнейшим анализом генерируемого кода.

Экспорт в Excel
Помогите, плиззз. Есть отчет, не могу сообразить как в первые две строки выводить те данные.

Быстрый экспорт в Excel
Всем здравствуйте. Необходимо организовать пользователям возможность быстрого экспорта в Excel.

Экспорт нескольких Excel файлов в один Excel файл
Здравствуйте! Помогите пожалуйста с реализацией макроса (осилил только загрузку с одного.

а лучше: есть ли возможность экспорта если его вообще нет установленного экселя. Извиняюсь . в воздух экспортировать.
Экспортируй в html иил в RT поле, а там генери таблицу
А как ты собираешся экспортировать в эксель не запуская его, соответственно не имея доступа до функций, методой экселя <!--QuoteBegin-Morpheus+22:06:2007, 12:09 -->
<span @ 22:06:2007, 12:09 )</span><!--QuoteEBegin-->можно и в cvs
[snapback]70251" rel="nofollow" target="_blank[/snapback]?[/quote]
+ xml =)
хм круто но не понятно, а если самую чуть подробностей тады повернем вопрос другим боком, не будем заниматься извращениями..
если делать через запуск экселя..
будет ли такой агент нормально работать при запуске через веб ?
если запуск агента будет производится через веб, где будет запускаться приложение: я так понимаю у клиента ?

А вы можете формулировать весь вопрос целиком.
Я не экперементировал, я код писал для работы под клиентом.

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

<!--QuoteBegin-allex+22:06:2007, 12:45 -->
<span @ 22:06:2007, 12:45 )</span><!--QuoteEBegin-->тут нужно немного видоизменять запрос на запуск приложения
[snapback]70268" rel="nofollow" target="_blank[/snapback]?[/quote]
и настройки браузера по безопасности

<!--QuoteBegin-Влад99+22:06:2007, 12:31 -->
<span @ 22:06:2007, 12:31 )</span><!--QuoteEBegin-->хм круто но не понятно, а если самую чуть подробностей
[snapback]70262" rel="nofollow" target="_blank[/snapback]?[/quote]

Если тебе именно web нужен, тогда генери html
А как, спроси google, сам не делал.
Создашь html, помести его в поле (для сохранности), потом экспортируй его на диск и запускай . ну или как тебе нужно, можешь отобразить результат, поместить его в поле RT как html

насчет XML не понял к чему его прикрутить).
наверное потому как не сформулировал задачу )

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

причем чем проще это будет для потребителя тем лучше,
самый идеальный вариант нажав на ссылку на сайте он получил документ экселя.

ЗЫ есть конешно и варианты работы непосредственно с базой через Notes, так в принципе и задумано ,но как показало практика конечный потребитель не асилил такой способ работы, в результате происходит дубляж ввода инфы как в бд лотуса так и в эксель в ручном режиме что отрицательно сказывается на актцуальности базы лотуса, так как те кто занимаются наполнением бд и созданием эксель файлов вполне справедливо считают такой способ идиотским.
посему появилась задумка сделать выход данных из бд лотуса в экселе.

Доброго времени суток!
Есть задача выгрузки данных в Excel, делаю выгрузку Attachment:

На строке Call emo.ExtractFile("С:\test") выдается ошибка: Object variable not set
Подскажите что не так. __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Выгрузка в Excel
Выгружаю данные в Эксель, формирую документ, все работает, кроме того что ни как не могу задать.

Выгрузка в Excel
Привет. Вопрос: как выгрузить в Excel только отмеченные категории и информацию по ним? Если.

Выгрузка в Excel набора документов.
Нету ни у кого настраиваемой сложной базы (агента) по выгрузке в Excel набора документов? Очень не.

Выгрузка в Excel
Добрый день! Может кто сталкивался с такой проблемой. У меня стоит офис 2010, у пользователя офис.

<!--QuoteBegin-Sandr+25:10:2007, 10:40 -->
<span @ 25:10:2007, 10:40 )</span><!--QuoteEBegin-->Но если вдуматься, то форма - тоже документ.
[snapback]82995" rel="nofollow" target="_blank[/snapback]?[/quote]
точно так же как и почти любой єлемент дизайна . __________________
Помощь в написании контрольных, курсовых и дипломных работ здесь Уточню проблему: В лотусе создается коллекция документов. Эти документы необходимо загнать в Excel-й шаблон. На дисках шаблон можно хранить только на очень кароткое время.
Вопрос: где сохранить и как достучаться до шаблона? Для: Lex-Hunter
ДА можно в отдельной базе в докуметах которые содержать в себе РТ-Поля .. в них и хранить Excel шаблоны.
Можно в профиле базы, но это уже не то Для: Lex-Hunter
Я уже писал про это. Можно хранить в отдельных документах как внедренный объект, а не как аттачмент. Хотя кто-то говорил, что это нехорошо. Но у меня всё работает.
Для работы извлекать на диск не надо. Правда есть другие ограничения.

<!--QuoteBegin-Lex-Hunter+25:10:2007, 10:39 -->
<span @ 25:10:2007, 10:39 )</span><!--QuoteEBegin-->Доброго времени суток!
Есть задача выгрузки данных в Excel, делаю выгрузку Attachment:
Код
Set wObj = CreateObject("Excel.Application")
Set emo=CurrentDoc.GetAttachment("Test.xls")
Call emo.ExtractFile("С:\test")
Set WordDoc = wObj.Documents.open(xlFilename)
[snapback]82949" rel="nofollow" target="_blank[/snapback]?[/quote]

не профи но все же
у меня вот так


Выгрузка в Excel
Здравствуйте! Возникла проблема! Нужно из MS Access перенести в Excel. Вроде банально, но нужно.

Выгрузка в Excel
Я выгружаю данные в Excel макрокомандой ПреобразоватьЭлектроннуюТаблицу. Мне нужно, чтобы в.

Выгрузка в Excel
Добрый день! Подскажите пожалуйста как максимально просто выгрузить данные из таблицы Оракла в.


Выгрузка в Excel
Всем доброго дня. Есть Sql БД В которой есть несколько несколько необходимых строк Для.


Выгрузка в EXCEL
Всем привет! Есть следующий код вывода данных из БД в эксель, все работает замечательно, выгружает.

Выгрузка в Excel
Всем доброго времени суток. Люди добрые, кто знает как выгрузить в Excel из запроса весь набор.

Автоматизация формирования и отправки писем в Lotus

Автоматизация формирования и отправки писем в Lotus Notes

Краткое описание

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

Подробное описание

На листе "const" данного шаблона указывается список партнеров с их дилерскими кодами (столбец А) и email (столбцы D,E,F). Остальные столбцы на данном листе информативные (в макросе не используются).

- На листе "template" ведется список писем-шаблонов.
- Заголовок письма и его тело берутся с листа "template".
- Адреса получателей (их можно задавать несколько через запятую), а также адреса в копию и скрытую копию берутся с листа "const".
- Отправку можно производить с личного ящика или с дилерского (в зависимости от выбранного значения в ячейках столбца B на листе "template" + можно добавить любые свои рабочие ящики).

В каждое письмо автоматом вкладывается один файл (rar-архив), исходя из кода дилера на листе "const". Этот же код присутствует в названии файла (первые четыре символа).

Для создания файлов-архивов в данном шаблоне присутствует еще один макрос - макрос архивации файлов. Детально описывать его алгоритм работы не будем, принцип также довольно прост. Например, есть одна папка, в которой много файлов или отчетов. Каждый из этих файлов начинается на соответствующий код дилера. Кликаете на кнопку "архивировать", выбираете данную папку с файлами и далее макрос, исходя из вашего списка кодов на листе "const", создаст нужные архивы. В каждый архив при этом попадают строго определенные коды дилеров.

Все новосозданные архивы будут лежать в папке "Текущая папка шаблона\Result". Остается только нажать кнопку "формировать письма", выбрать папку с архивами и письма с вложениями готовы.

Читайте также: