Lotus notes работа с excel

Гринго


  • #1

Добрый день

Помогите решить следующую задачу. Не являюсь программистом Lotus Notes, но хотел бы решить проблему получения реквизитов документов из БД Lotus

Есть файл excel в котором построчно сохраняются номера документов из БД Lotus Notes (заявок на сервис). Номера заявок:

232
346
1236

Список заявок весьма большой (сотни строк).

В Lotus Notes есть БД указанных заявок (содержит несколько сотен тысяч элементов). Требуется периодически проверять статус заявок из файла excel (в работе, выполнены, закрыты и т.п.). Сейчас эта проверка делается путем открытия Lotus Notes, базы данных заявок, ручного поиска документа по заданному номеру, открытию документа и просмотр статуса – длительная процедура, от которой хотелось бы уйти.

Как хотелось бы решить задачу – написать скрипт на VBA (Excel, доступа к среде программирования Lotus Notes нет), который последовательно перебирает номера заявок, используя объектную модель Lotus получает доступ к указанной базе Lotus Notes и по номеру заявки получает доступ к указанному документу и проверяет наличие заданного реквизита (Статус заявки). Собственно, вопросы:

1. Как получить ссылку на определенный документ из Lotus Notes по значению одного из его реквизитов (номер)

2. Определенная альтернатива – если в excel сохранена гиперссылка на конкретный документ из БД Lotus Notes, как по этой гиперссылке получить ссылку (в программе) на конкретный документ Lotus Notes?

garrick


  • #2

  1. А зачем вам вообще Excel? Почему нельзя всю необходимую работу с заявками сделать в Lotus Notes?
  2. Если не знаете как работает Lotus Notes, не знаете внутреннего устройства базы (имена полей, представлений, их структуру и т.п.), лучше даже не беритесь за эту работу.
  3. Domino Designer можно бесплатно скачать на сайте IBM, в его хелпе есть вся необходимая для вас информация.

lmike

lmike

нет, пердело совершенство


  • #3

Как хотелось бы решить задачу – написать скрипт на VBA (Excel, доступа к среде программирования Lotus Notes нет)

дык поставьте дизайнер — он бесплатный

1. Как получить ссылку на определенный документ из Lotus Notes по значению одного из его реквизитов (номер)

получение по ключу (читайте хэлп дизайнера нотус — в тырнетах полно ссылок на этот хэлп)

2. Определенная альтернатива – если в excel сохранена гиперссылка на конкретный документ из БД Lotus Notes, как по этой гиперссылке получить ссылку (в программе) на конкретный документ Lotus Notes?

в конце ссылки — UNID — он и есть ссылка на документ
формат URL для нотус — тот же хэлп

Гринго


  • #4

Спасибо за ответы
Список заявок в excel-файле — жесткое требование заказчика. Данный список рассылается многим пользователям внутри компании, для контроля статуса заявок (ответственных за их исполнение), при этом почтовая программа в компании другая (опять же жесткое требование заказчика). Установка ПО жестко регламентирована со стороны IT-службы, а макрос должен работать у любого конечного пользователя (не программиста) из группы контроля, у кого есть установленный Excel и Lotus в системе.

Спасибо за ссылку на хелп дизайнера — прочитаю

Имена БД, имя представления известно. Доступ и работу с Lotus Notes из Excel планируется организовать через создание экземпляров приложения Lotus Notes (CreateObject, GetObject) — лишь бы объектная модель Lotus позволяла так работать
Опыт автоматизации и минимизации ручной работы и связи данных из разных источников, агрегации у меня есть, поэтому, уверен, что данная задача имеет решение

Буду признателен, если есть что добавить

savl


  • #5

@Гринго может пригодится :

link removed

+ хелп по лотусовым классам.

lmike

lmike

нет, пердело совершенство


  • #6

Список заявок в excel-файле — жесткое требование заказчика.

никак не связано с программированием под LDN

Данный список рассылается многим пользователям внутри компании, для контроля статуса заявок (ответственных за их исполнение), при этом почтовая программа в компании другая (опять же жесткое требование заказчика).

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

Установка ПО жестко регламентирована со стороны IT-службы, а макрос должен работать у любого конечного пользователя (не программиста) из группы контроля, у кого есть установленный Excel и Lotus в системе.

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

поэтому, уверен, что данная задача имеет решение

да — имеет — писать java с библиотекой POI, запускать на сервере (т.е. библиотека копируется на сервер LDN. Даже в случае огромных выборок — тормоза будут меньшими, чем при использовании COM объекта из MSO (кот. может вовсе забить доступную память)
какой бы не была массовая инсталяция LDN — отличия будут, т.к. могут отличаться групповые политики и настройки безопасности, добавим сюда изменения в безопасности, во всяких МС патчах (как пример — недавняя история,

Ссылка скрыта от гостей

)
и как правильно отметил @garrick — написать без ошибок и кастылей выгрузку из LDN, для большого кол-ва документов, может спец. В вашем варианте, для еще через COM — это будет мучительный и долгий процесс (да и ломаться, потом, будет регулярно)

Логика из ТЗ извращена до наоборот (подгоняли под низкий уровень писателей, на VBA, видать) и следовать ей, буквально — это потеря времени и сил
Вариант, описанный мной — не требует, вовсе, Excel, и будет работать на серверах, стало-быть — будет меньше «особенностей»

Последнее редактирование: 15.08.2016

Гринго


lmike

lmike

нет, пердело совершенство


  • #8

вспомнил, тут…
у домины вполне себе есть способ общения без KOM и называется он

Ссылка скрыта от гостей

для того кто «привык» в VBA — «берет в руки» COM для работы с хттп и…

garrick


  • #9

Предлагаю построить в Notes вьюху, отображающую всю необходимую информацию по заявкам, открыть к ней доступ по HTTP, а в Excel воткнуть URL этой вьюхи. … а можно даже и не «втыкать» и чтобы посмотреть информацию по заявкам, ни Notes, ни даже Excel не будет нужен.

Гринго


  • #10

Всем спасибо за критику и предложения, 2@savl — особенно. Реализовал, работает, достаточно шустро.
Да, не идеальное решение, его невозможно масштабировать, но такой задачи и не стоит. Даже в текущей версии это сэкономит десятки человеко-часов в месяц — за счет того, что не придется вручную открывать каждую заявку в Lotus для просмотра значений для определенных полей. Есть отдельные моменты, которые реализованы «криво», но пока не нашел, как обойти это ограничение, может подскажете

Код:

Sub DemandParser()

  Dim oSession As Object
  Dim oDB As Object
  Dim oNotesView As Variant
  Dim oColumn As Variant
  Dim doc As Object
  Dim oItems As Variant
  Dim oItem As Variant

  Dim lngCounter As Long, lngFResult As Long, lngRow As Long
  Set oSheet = ThisWorkbook.Worksheets("Data")
  lngRow = oSheet.Cells(1, 3).End(xlDown).Row
  If lngRow > 1000000 Then
     MsgBox "Нет данных для анализа!"
     Exit Sub
  End If
  Set oSession = CreateObject("Notes.NotesSession")
  Set oDB = oSession.GetDatabase("<servername>", "<DBName>")
  Set oNotesView = oDB.GetView("All")
  ' при выполнении следующей строки выдается ошибка, приходится перебирать элементы коллекции
  'Set oColumn = oNotesView.Columns(5)
  For Each oColumn In oNotesView.Columns
     If oColumn.ItemName = "DemandNumber" Then
          oColumn.IsSorted = True
          Exit For
     End If
  Next oColumn
  For lngCounter = 2 To lngRow
    Application.StatusBar = "Обработка строки " & CStr(lngCounter) & " из " & CStr(lngRow)
 
    sTTNumber = Left(oSheet.Cells(lngCounter, 21).Value, 6)
 
    If IsNumeric(sTTNumber) Then
       sSearchString = Replace("[DemandNumber] = {DemandNumber}", "{DemandNumber}", sTTNumber)
       lngFResult = oNotesView.FTSearch(sSearchString)
       If lngFResult = 0 Then
          oSheet.Cells(lngCounter, 24).Value = "!!! Заявка не найдена"
       Else
          Set doc = oNotesView.GetFirstDocument
       
          '
          ' здесь реализуется соответствующая обработка
          '
          ' как получить первое значение? - аналогично ситуации выше, работает через перебор элементов коллекции
          oItems = doc.GetItemValue("DemandNumber")
          For Each oItem In oItems
           
              Exit For
          Next oItem
     
     
       End If
    End If
  Next
  Application.StatusBar = ""
  MsgBox "Готово!"
  Set doc = Nothing
  Set oNotesView = Nothing
  Set oDB = Nothing
  Set oSession = Nothing
End Sub

Последнее редактирование модератором: 16.08.2016

lmike

lmike

нет, пердело совершенство


  • #11

‘ при выполнении следующей строки выдается ошибка, приходится перебирать элементы коллекции
‘Set oColumn = oNotesView.Columns(5)

зачем это? (сортировать колонку из кода)

lngFResult = oNotesView.FTSearch(sSearchString)

вам предложили почитать дизайнер хэлп, но не для поиска схожего с SQL
LDN — NoSQL БД
в нотусе, для поиска ключей, используют ключевую колонку, для чего — создают вьюшку с сортированной колонкой, по ключу (первую, можно больше одной колонки — но это др. история)
получать документ — это очень накладно для памяти и времени
во вьюшке (вернее в выборке по ключу — NotesViewEntryCollection) есть NotesViewEntry , а у него ColumnValues (типа Variant — массив значений, по колонкам)
т.е. создается спец. вьюшка, с нужной ключевой колонкой (сортированной) и колонками для нужных значенией

Последнее редактирование: 16.08.2016

lmike

lmike

нет, пердело совершенство


  • #12

oItems = doc.GetItemValue(«DemandNumber»)

всегда выдает массив (даже если там одно значение), нулевым элементом будет первое значение doc.GetItemValue(«DemandNumber»)(0)
НО не делайте так (причина — выше)

garrick


  • #13

а у него ColumnValues (типа Variant — массив значений, по колонкам)

…но тут тоже есть тонкости, которые могут вынести мозг человеку, который не в теме и при том не читающий хелп. Я же говорил «уметь надо».

lmike

lmike

нет, пердело совершенство


  • #14

…но тут тоже есть тонкости, которые могут вынести мозг человеку, который не в теме и при том не читающий хелп. Я же говорил «уметь надо».

оно понятно, получается ТС сочиняет велосипед, с кривыми колесами, при том что есть легальные методы взаимодействия с платформой — через хттп
безо всяких «кривых» COM
но как я уже не раз отмечал — мышление похаченное использованием windows трудно направить в «нужное» русло

Гринго


  • #15

Ситуацию нужно рассматривать с разных сторон и понимать задачу, которую просят помочь решить. Лучшее решение не всегда выигрывает у просто хорошего. Я не писал всю ситуацию, чтобы не засорять топик, но возможно, это была моя ошибка. Мне нужно простое прикладное решение, работающее — для себя и моих сотрудников. Также им поделюсь с коллегами. Не требуется промышленное «железное» решение — Lotus Notes живет в компании до конца этого года, потом будет совсем другое ПО для работы с заявками и совсем другая процедура работы с ними и текущее решение мы спокойно выкинем на свалку. На его создание я суммарно потратил 4 часа своего чистого времени.

За счет текущей, пусть «кривой», не оптимальной реализации экономия времени получилась за одну итерацию — в 180 раз (с 30 минут ручным способом до 10 секунд данным решением — обработка 170 позиций). Таких итераций — около 10 в месяц по моему направлению. Оптимизировать работу одной итерации из текущих 10 секунд до 1 секунды (условно) — это дополнительно к уже полученной экономии в 29 мин. 50 секунд добавить еще 9 секунд — с моей точки зрения, овчинка выделки не стоит.
Для этого (справедливо отмечено) действительно пришлось бы серьезно изучить документацию к Lotus, классы, проштудировать форумы. Если бы я был программистом (это уже в прошлом) — безусловно, это то, с чего бы я начал. Но на это бы у меня ушло совсем другое время, которого сейчас у меня не сказать, что много и кто бы тогда делал остальную мою работу:)?.

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

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

В любом случае, спасибо за конструктивную критику и советы.

lmike

lmike

нет, пердело совершенство


  • #16

Не требуется промышленное «железное» решение — Lotus Notes живет в компании до конца этого года, потом будет совсем другое ПО для работы с заявками и совсем другая процедура работы с ними и текущее решение мы спокойно выкинем на свалку.

оно и не требовалось, в варианте с http…
просто распарсить xml/json
слезать с LDN (вот даже интересно — на что?) достаточно непростой процесс, почему-то мне кажется — заявки там не единственная БД
у нас, в организации, уж клялись уйти от домино раз 100500, прошло овер 15лет (почта давно уже на чанге)
и ШП (Share Point) разные решения пихали (тоже пытались для документ-процесса пристроить)…, но юзеры! (именно) эти убожественые решения завернули
Нам рассказывали как придет велики SAP — и будет фсё… , ога — в тысячи раз выросло кол-во эхелей на файлопомойке (уже засрали 6Тб)
Есть гейроаейский спец. кот. «доказал» — 1С более затратна (это для нашего-то законодательство), чем SAP, на секунду — внедрение решения на SAP, в нашей стране, уже обошлось (приблизительно) десятки лярдов грина

не… — разумеется, «назло кондуктору — возьму билет, сойду с трамвая, пойду пешком», могут сделать «эффективные манагеры»
эффект от этого тоже известен — велосипедные файлы с макросами и хитровынебанными формулами заполняют файло-помойки
этот путь, у нас в компании, уже проходили не раз
но как говориться — время идет, а кол-во дураков только растет… ;)
а вам — успехов, только стоило ли с вопросами по VBA приходить сюда ? ;)

Гринго


  • #17

2@lmike:
SAP — тема отдельного разговора, в том виде, в котором его могут внедрить. Действительно, количество с excel-файлов с ним растет на порядок, через них пытаются закрывать дыры, которые не покрываются функционалом данной ERP. Самое интересно, что при внедрении SAP одним из аргументов приводилось то, что «мы откажемся от большого количества excel-файлов, которые у нас есть».

Куда стоило обращаться тогда? На какой форум? :)

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

P.S. Решение уже проверили у других пользователей, работает — для них шок, что оказывается, такое можно вообще возможно было реализовать. БД в LDN заявок реализовывала сторонняя компания еще в 2006 году, наши IT ее только поддерживают в рабочем состоянии, доработок никаких не делают, технической документации по полям не было. Так что я результатом доволен, с учетом того, что приступал к задаче ничего не зная об объектах LDN и о внутреннем устройстве данной БД в частности.

lmike

lmike

нет, пердело совершенство


  • #18

Куда стоило обращаться тогда? На какой форум?

гугл VBA lotus notes field

Последнее редактирование: 17.08.2016

lmike

lmike

нет, пердело совершенство


  • #19

не зная об объектах LDN и о внутреннем устройстве данной БД в частности.

знать пришлось — т.к. COM объекты именно к этому и привязывают, а вот распарсить ответ от http сервера LDN — вполне понятный вариант
ибо там текст

и вы только ради этого купили LDN (1 БД)?
я вам больше скажу — есть готовое решение на LDN —

Ссылка скрыта от гостей

называется, единственная «засада» — разработчики на украине, т.е. потенциально могут быть сложности с закупкой ПО (для России, на сайте сказано — для резидентов Украины)
про — на что менять — вы так и не сказали ;)

lmike

lmike

нет, пердело совершенство


  • #20

А в целом с нестандартной обработкой

а вот для этого и есть построение архитектуры, чтобы не было (минимизировать) нестандартного
а «здесь» получается как жить на стройке — оно конечно можно, но…
и вот в чем для меня загадка…
существуют репортинговые системы (и бесплатные), есть ИТ отдел — неужто сложно построить процесс, чтобы делать все через них?!
когда «каждая кухарка» будет…, т.е. — каждый должен заниматься своими обязанностями (прямыми), а не изучением VBA, Excel, Word и т.п.
и самое смешное — везде встречаются требования — уметь пользоваться Word и Excel
Именно эти инструменты насаждаются, в то время как «никто» (>80%) ими пользоваться не умеют (и в первую голову — руководители)

Последнее редактирование: 17.08.2016

 

pub10

Пользователь

Сообщений: 6
Регистрация: 02.07.2014

Здравствуйте, у кого-нибудь есть макрос для создания рассылки из Excel через Lotus Notes?
Нужно, чтобы выбиралось ФИО и емейл из столбца и вставлялось в шаблонное письмо, прикреплялся файл и отправлялось все это через клиент Lotus Notes 8.5, то бишь автоматическое формирование и отправка письма, без доп телодвижений… Либо по каждому ФИО отдельное письмо, либо так, чтобы они в скрытые попадали и не видели др друга.. рассылка по 100-150 клиентам.
В идеале, чтобы подставлялось окончание ЫЙАЯ в зависимости от пола, ктр так же указан в столбце Ёкселя.

Для аутлука работающих решений нашел и адаптировал под себя, а вот для Lotus как-то не очень.. вообще пока дело швах у меня  :(

Изменено: pub1002.07.2014 09:51:53

 

Hugo

Пользователь

Сообщений: 23250
Регистрация: 22.12.2012

Изменено: Hugo02.07.2014 09:54:55

 

Marchuk

Пользователь

Сообщений: 1167
Регистрация: 01.01.1970

 

pub10

Пользователь

Сообщений: 6
Регистрация: 02.07.2014

Marchuk, спасибо, вроде, пашет..

Пока из косяков вижу следующее:
родные почтовые клиенты на андройде не видят текста внутри сообщения, а так же всех аттачей. Пробовал на нескольких девайсах.
Вэб-морды почтовиков видят текст сообщения, но БЕЗ форматирования.. т. е. текст выглядит как «<html>  <head>   <title></title>  </head>  <body>  <h1>Дорогой, любимый!</h1>  :(   …прикрепленную подпись-картинку, но не видят аттача.

Лотусовый клиент, а так же почтовая прога на apple все отоброжают корректно!=)

Изменено: pub1002.07.2014 16:49:08

 

Marchuk

Пользователь

Сообщений: 1167
Регистрация: 01.01.1970

#5

02.07.2014 13:25:08

посмотри кусок этого кода.

Код
' как я понимаю это подпись картинка
strImagePath = "C:Usersu_m03lhPicturesexcel.jpg"
    strImageCid = "0excel.jpg"
    strImageType = "image/jpeg"
    Set mimeImage = nMime.CreateChildEntity()
    Set mimeImageHeader = mimeImage.CreateHeader("Content-Type")
    Call mimeImageHeader.SetHeaderVal("multipart/mixed")
    Call nMailStream.Open(strImagePath)
    Call mimeImage.SetContentFromBytes(nMailStream, strImageType, ENC_IDENTITY_BINARY)
    Call nMailStream.Close
 может через него прикреплять как-то файлы.

яндекс.почта на андроиде показывает нормально письма.
встроенная в сони, показывает треугольники вместо текста.
Попробуй просто текст указать, а не форматированный под HTML формат. (ранее так и было, потом коллеги доработали под HTML формат)

У нас все клиенты в Лотусе сидят, поэтому для наших задач этого хватает )))))
На других клиентов никогда не тестилось.

 

pub10

Пользователь

Сообщений: 6
Регистрация: 02.07.2014

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

Все отлично воспринимают токо клиент Лотуса и почтовый клиент под apple.

Что-то c синтаксисом макроса не совсем универсально…

 

Marchuk

Пользователь

Сообщений: 1167
Регистрация: 01.01.1970

#7

02.07.2014 17:31:01

Цитата
pub10 пишет:
Что-то c синтаксисом макроса не совсем универсально…

Его коллеги адаптировали под Лотус, чтобы красивые письма были )))

вот нашел кусок старого кода, попробуй заменить аналогичную часть в том файле , на это

Код
Set objNotesField = ObjNotesDocument.AppendItemValue("CopyTo", Desti)
Set objNotesField = ObjNotesDocument.AppendItemValue("BlindCopyTo", EmailBCCTo)
Set objNotesField = ObjNotesDocument.CREATERICHTEXTITEM("Body")

 
With objNotesField
  .APPENDTEXT "Это письмо сгенерировано автоматически."
  .ADDNEWLINE 1
    .APPENDTEXT ""
    .ADDNEWLINE 2
  .APPENDTEXT ""
  .ADDNEWLINE 2
    .APPENDTEXT "Какие поля не заполнены:"
  .ADDNEWLINE 1
  .APPENDTEXT "" & Stroka
  .ADDNEWLINE 1
End With
 
 'Файл прикреплять или нет
    If Workbooks("Рассылка  ОбосновDB.xls").Sheets("Check").Range("G" & Loop_Counter).Value = "YES" Then
        Set objiect = objNotesField.EmbedObject(1454, "", EmailAtt)
    End If
 
 
 ObjNotesDocument.SAVEMESSAGEONSEND = SaveOnSend
 
 

pub10

Пользователь

Сообщений: 6
Регистрация: 02.07.2014

Обратил внимание на параметр NoBody, но его замена на Body вызывает ошибку «Item Body already exists
Видимо, где-то в другом месте нужно запретить создание.. пока еще не дошло до меня.  :(

 

Marchuk

Пользователь

Сообщений: 1167
Регистрация: 01.01.1970

Я нашел старый файл рассылки 2012 года.
Смотрите макрос в Module4.

 

Marchuk

Пользователь

Сообщений: 1167
Регистрация: 01.01.1970

 

pub10

Пользователь

Сообщений: 6
Регистрация: 02.07.2014

Шикарно, огромное спасибо,

Marchuk

! =)
Теперь хоть без форматирования, зато везде все отображается и прикрепляется =)

 

levscha84

Пользователь

Сообщений: 2
Регистрация: 16.07.2014

Здравствуйте, может быть кто нибудь знает макрос для создания задач в Lotus Notes через Excel?

 

pub10

Пользователь

Сообщений: 6
Регистрация: 02.07.2014

#13

24.04.2015 12:43:05

Прикрепил файлик с макросом, по ктр все успешно отправляется по Lotus с личного ящика. Только хотелось бы, чтобы в самом клиенте Lotus письма падали в Sent, а в идеале, вообще все отправлялось от имени группового ящика..  

Прикрепленные файлы

  • Рассылка_Lotus_test.xls (59 КБ)

This is a more bare-bones way to send an email. It works for me, I have Lotus Notes 9 so hopefully it also works for your version.

Sub Send_Email_via_Lotus()
'Send an e-mail & attachment using Lotus Not(s)
'Original Code by Nate Oliver (NateO)
'Declare Variables for file and macro setup
'Dim AVal As Variant
Dim UserName As String, MailDbName As String, ccRecipient As String, Recipient As String
Dim Maildb As Object, MailDoc As Object, Session As Object
Dim email As String, bodyText As String, clientRef As String, bodyRng As Range, emailBody As String
Dim notesUIDoc As Object

With Application
    .ScreenUpdating = False
    .DisplayAlerts = False

    ' Open and locate current LOTUS NOTES User
    Set Session = CreateObject("Notes.NotesSession")
    UserName = Session.UserName
    MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
    Set Maildb = Session.GETDATABASE("", MailDbName)
    If Maildb.IsOpen = True Then
    Else
        Call Maildb.OPENMAIL
    End If

    Recipient = Sheets("Sheet1").Range("A1").Value
    ccRecipient = Sheets("Sheet1").Range("A2").Value
    Set bodyRng = Sheets("Sheet2").Range("A1:B24")

    Dim cel As Range
    For Each cel In bodyRng
        emailBody = emailBody & " " & cel.Value
    Next cel

    ' Create New Mail and Address Title Handlers
    Set MailDoc = Maildb.CreateDocument
    MailDoc.Form = "Memo"
    MailDoc.sendTo = Recipient
    MailDoc.CopyTo = ccRecipient
    MailDoc.Subject = "SUBJECT HERE"

    'Displays email message without sending; user needs to click Send
    Set workspace = CreateObject("Notes.NotesUIWorkspace")
    Set notesUIDoc = workspace.EditDocument(True, MailDoc)
    'Call notesUIDoc.FieldClear("Body") '' This line will clear the ENTIRE body, including signature.
    Call notesUIDoc.gotofield("Body") 'This should just Go to the body, keeping your signature.
    Call notesUIDoc.FieldAppendText("Body", emailBody)

    Set Maildb = Nothing
    Set MailDoc = Nothing
    Set AttachME = Nothing
    Set Session = Nothing
    Set EmbedObj1 = Nothing

    .ScreenUpdating = True
    .DisplayAlerts = True
    .EnableEvents = True
End With

'End If
Exit Sub

errorhandler1:
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj1 = Nothing
Application.EnableEvents = True

End Sub

Note that the Attachment part is lacking, I’ll keep searching for that but this should get you started, and see how you can use the variables to set the body, recipients, etc. (There may be unnecessary variables too, I didn’t quite check those).

NOTE: Please review the For Each cel in bodyRng loop, as I don’t quite know how you want the body set up.


excel-lotus-notes

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

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

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

Многие из нас в виду существующей системы документооборота в организации работают в Lotus Notes. Это работа с почтой, работа с приказами, распоряжениями, RFC и прочими аналогичными документами.

Но если по роду своей деятельности вам приходится анализировать, например, большое количество RFC на предмет изменения их статуса (закрыт, отклонен, на исполнении), контролировать процесс визирования, исполнения и тд., то вариантов два:

  1. каждый раз заходить в Lotus в базу RFC, открывать каждое RFC и смотреть его данные,
  2. отслеживать уведомления в электронной почте.

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

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

На этот случай есть третий вариант — подключиться к базе данных Lotus Notes и получать необходимые сведения путем обычного SQL-запроса.

В вложении ниже прилагаю пример шаблона в Excel, который позволяет это делать. Перед применением шаблона необходимо установить Lotus Notes SQL Driver и настроить подключение. Для неискушенных пользователей скажу, это в разы проще чем настроить клиент Oracle (если конечно, вам доводилось его настраивать).

В любом случае, установка/настройка делается один раз и потом сводные данные можно выгружать одним кликом в тот же Excel. Можете посмотреть в шаблоне, как это примерно выглядит. Плюс данного подхода также в том, что в макросе VBA вы можете настроить какие угодно проверки и выводить информацию в том виде, какой вам предпочтительнее.

По всем возникшим вопросам (где скачать драйвер, как его установить, как настроить подключение, как настроить sql-запрос и др) пишите, будем рады помочь.

Экспорт данных из представлений

Можно экспортировать данные представления Notes в структурированные и табличные текстовые файлы и файлы электронных таблиц Lotus 1-2-3. В зависимости от выбранного типа экспорта можно экспортировать видимый в представлении текст (табличный текст) или текстовые данные и данные в полях в документах (структурированный текст).

Экспорт документов не приведет к их удалению из представления, данные будут просто скопированы в новый файл.

Экспорт документов из представления в структурированные текстовые файлы

Структурированный текст — текст ASCII. При экспорте из представления Notes в структурированный текст создается файл, содержащий тексты документов без атрибутов форматируемого текста и все данные полей документов.

Если решено использовать коды знаков, их просмотреть в таблице символов Windows. В Notes используются только коды, а не сами знаки ASCII.

Экспорт документов не приведет к их удалению из представления, данные будут просто скопированы в новый файл.

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

  1. В представлении выделите документ, который требуется экспортировать.
  2. Выберите команду: Файл — Экспорт.
  3. В списке «Тип файла» диалогового окна «Экспорт» выберите значение «Структурированный текст».
  4. Введите в поле «Имя файла» имя и расширение, в результате чего будет создан новый файл, или выберите существующий файл из списка, в результате чего будут заменены данные в уже существующем файле.
  5. Нажмите кнопку «Экспорт».
  6. Если был выбран файл, который уже существует в каталоге, нажмите кнопку «Заменить», чтобы заменить файл, или «Отмена», чтобы вернуться в диалоговое окно «Экспорт» и ввести новое имя файла.
  7. Выберите параметр «Все документы» или «Выбранные документы».
  8. Для экспортируемого файла установите переключатель в положение, соответствующее нужному набору знаков: «Набор знаков по умолчанию», «Универсальный (UTF-8) или Юникод. Дополнительные сведения см. в разделе
    «Настройка личных параметров»
    .
  9. Выберите значение «Разрыв страницы», чтобы в конце каждой строки добавлялись знаки возврата каретки и разрыва строки в качестве разделителя, или значение «Знак с кодом», чтобы в конце каждого поля добавлялся знак с указанным кодом.
  10. В группе «Перенос слов в документах» укажите количество знаков, которое должно размещаться в одной строке. По умолчанию в одной строке размещается 75 знаков.
  11. Нажмите кнопку ОК.
Экспорт данных из представления в табличные текстовые файлы

Табличный текст является текстом ASCII, объединенным в строки и столбцы, разделенные табуляцией. При экспорте представления в табличный текстовый файл каждый строка в представлении Notes становится текстовой строкой. Все столбцы представления Notes становятся столбцами текста, разделенного пробелами. Содержимое полей Notes, отображаемое в представлении, становится записями в каждом столбце.

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

Экспорт документов не приведет к их удалению из представления, данные будут просто скопированы в новый файл.

Чтобы экспортировать данные из представления в табличные текстовые файлы

  1. В представлении выделите документ, который требуется экспортировать.
  2. Выберите команду: Файл — Экспорт.
  3. В списке «Тип файла» диалогового окна «Экспорт» выберите значение «Табличный текст».
  4. Введите в поле «Имя файла» имя и расширение, в результате чего будет создан новый файл, или выберите существующий файл из списка, в результате чего будут заменены данные в уже существующем файле.
  5. Нажмите кнопку «Экспорт».
  6. Если был выбран файл, который уже существует в каталоге, нажмите кнопку «Заменить», чтобы заменить файл, или «Отмена», чтобы вернуться в диалоговое окно «Экспорт» и ввести новое имя файла.
  7. Выберите параметр «Все документы» или «Выбранные документы».
  8. Чтобы включить заголовки представления в верхнюю часть экспортируемого файла, установите флажок «Включить заголовки столбцов».
  9. Для экспортируемого файла установите переключатель в положение, соответствующее нужному набору знаков: «Набор знаков по умолчанию», «Универсальный (UTF-8) или Юникод.
    Дополнительные сведения см. в разделе
    «Настройка личных параметров»
    .
  10. Нажмите кнопку ОК.
Экспорт данных из представления в файлы электронных таблиц

Данные из представления можно экспортировать в файл электронной таблицы Lotus 1-2-3. При экспорте представления в электронную таблицу каждые строка и столбец таблицы в представлении становятся соответственно строкой и столбцом электронной таблицы. Любой текст, отображаемый в представлении, становится содержимым ячейки электронной таблицы. Названия столбцов становятся метками столбцов в электронной таблице.

Совет Чтобы выполнить экспорт в файл Microsoft Excel, экспортируйте представление как электронную таблицу Lotus 1-2-3 и сохраните этот файл в Lotus 1-2-3 как файл Microsoft Excel.

Экспорт документов не приведет к их удалению из представления, данные будут просто скопированы в новый файл.

В Notes можно экспортировать файлы в формате .WKS или в формате .WK4. Формат .WK4 является более новым. Используйте этот формат за исключением тех случаев, когда для работы с файлом планируется воспользоваться старой версией 1-2-3.

Предупреждение Перед открытием файла в Lotus 1-2-3 не изменяйте расширение экспортируемого файла в операционной системе, иначе могут возникнуть проблемы при сохранении атрибутов. Чтобы преобразовать файл в другую версию 1-2-3, откройте файл в 1-2-3, выберите команду: Файл — Сохранить как, а затем укажите необходимый формат файла.

Чтобы экспортировать данные в файл электронной таблицы Lotus 1-2-3

  1. В представлении выделите документ, который требуется экспортировать.
  2. Выберите команду: Файл — Экспорт.
  3. В списке «Тип файла» диалогового окна «Экспорт» выберите значение «Lotus 1-2-3».
  4. Введите в поле «Имя файла» имя и расширение, в результате чего будет создан новый файл, или выберите существующий файл из списка, в результате чего будут заменены данные в уже существующем файле. В качестве расширения укажите .WKS или .WK4.
  5. Нажмите кнопку «Экспорт».
  6. Если был выбран файл, который уже существует в каталоге, нажмите кнопку «Заменить», чтобы заменить файл, или «Отмена», чтобы вернуться в диалоговое окно «Экспорт» и ввести новое имя файла.
  7. Выберите параметр «Все документы» или «Выбранные документы».
  8. Чтобы включить заголовки представления в экспортируемый файл, установите флажок «Включить заголовки столбцов».
  9. Нажмите кнопку ОК.
Экспорт данных представления в файлы CSV

Можно экспортировать данные представления Notes в файл CSV. Формат файла «Значения, разделенные запятыми» (CSV) — это простой текст ASCII, в котором каждая запись расположена на отдельной строке, а поля разделены запятыми. Документы в таком файле будут представлены как отдельные записи.

Могут быть экспортированы только данные представления Notes. Нельзя экспортировать в формат CSV данные из открытого документа.

Импорт файлов CSV не поддерживается.

Экспорт документов не приведет к их удалению из представления, данные будут просто скопированы в новый файл.

Чтобы экспортировать представление Notes в формат CSV

  1. В представлении выделите документ, который требуется экспортировать.
  2. Выберите команду: Файл — Экспорт.
  3. Введите в поле «Имя файла» имя и расширение, в результате чего будет создан новый файл, или выберите существующий файл из списка, в результате чего будут заменены данные в уже существующем файле. В качестве расширения укажите .csv.
  4. В списке «Тип файла» диалогового окна «Экспорт» выберите значение «Значения, разделенные запятыми».
  5. Выберите параметр «Все документы» или «Выбранные документы».
  6. Чтобы включить заголовки представления в экспортируемый файл, установите флажок «Включить заголовки столбцов».
  7. Укажите набор символов для экспорта. Возможные варианты — набор символов по умолчанию, международный (UTF-8) и Юникод.
  8. Нажмите кнопку ОК.

Гринги

1

13.08.2016, 14:46. Показов 12416. Ответов 38


Студворк — интернет-сервис помощи студентам

Добрый день

Помогите решить следующую задачу. Не являюсь программистом Lotus Notes, но хотел бы решить проблему получения реквизитов документов из БД Lotus

Есть файл excel в котором построчно сохраняются номера документов из БД Lotus Notes (заявок на сервис). Номера заявок:

232
346
1236

Список заявок весьма большой (сотни строк).

В Lotus Notes есть БД указанных заявок (содержит несколько сотен тысяч элементов). Требуется периодически проверять статус заявок из файла excel (в работе, выполнены, закрыты и т.п.). Сейчас эта проверка делается путем открытия Lotus Notes, базы данных заявок, ручного поиска документа по заданному номеру, открытию документа и просмотр статуса – длительная процедура, от которой хотелось бы уйти.

Как хотелось бы решить задачу – написать скрипт на VBA (Excel, доступа к среде программирования Lotus Notes нет), который последовательно перебирает номера заявок, используя объектную модель Lotus получает доступ к указанной базе Lotus Notes и по номеру заявки получает доступ к указанному документу и проверяет наличие заданного реквизита (Статус заявки). Собственно, вопросы:

1. Как получить ссылку на определенный документ из Lotus Notes по значению одного из его реквизитов (номер)

2. Определенная альтернатива – если в excel сохранена гиперссылка на конкретный документ из БД Lotus Notes, как по этой гиперссылке получить ссылку (в программе) на конкретный документ Lotus Notes?

0 / 0 / 0

Регистрация: 07.02.2106

Сообщений: 812

14.08.2016, 10:22

2

А зачем вам вообще Excel? Почему нельзя всю необходимую работу с заявками сделать в Lotus Notes?
Если не знаете как работает Lotus Notes, не знаете внутреннего устройства базы (имена полей, представлений, их структуру и т.п.), лучше даже не беритесь за эту работу.
Domino Designer можно бесплатно скачать на сайте IBM, в его хелпе есть вся необходимая для вас информация.



0



0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

14.08.2016, 10:26

3

Цитата
Сообщение от Гринго

Как хотелось бы решить задачу – написать скрипт на VBA (Excel, доступа к среде программирования Lotus Notes нет)

дык поставьте дизайнер — он бесплатный

Цитата
Сообщение от Гринго

1. Как получить ссылку на определенный документ из Lotus Notes по значению одного из его реквизитов (номер)

получение по ключу (читайте хэлп дизайнера нотус — в тырнетах полно ссылок на этот хэлп)

Цитата
Сообщение от Гринго

2. Определенная альтернатива – если в excel сохранена гиперссылка на конкретный документ из БД Lotus Notes, как по этой гиперссылке получить ссылку (в программе) на конкретный документ Lotus Notes?

в конце ссылки — UNID — он и есть ссылка на документ
формат URL для нотус — тот же хэлп



0



Гринги

14.08.2016, 13:12

4

Спасибо за ответы
Список заявок в excel-файле — жесткое требование заказчика. Данный список рассылается многим пользователям внутри компании, для контроля статуса заявок (ответственных за их исполнение), при этом почтовая программа в компании другая (опять же жесткое требование заказчика). Установка ПО жестко регламентирована со стороны IT-службы, а макрос должен работать у любого конечного пользователя (не программиста) из группы контроля, у кого есть установленный Excel и Lotus в системе.

Спасибо за ссылку на хелп дизайнера — прочитаю

Имена БД, имя представления известно. Доступ и работу с Lotus Notes из Excel планируется организовать через создание экземпляров приложения Lotus Notes (CreateObject, GetObject) — лишь бы объектная модель Lotus позволяла так работать
Опыт автоматизации и минимизации ручной работы и связи данных из разных источников, агрегации у меня есть, поэтому, уверен, что данная задача имеет решение

Буду признателен, если есть что добавить

0 / 0 / 0

Регистрация: 27.10.2011

Сообщений: 2,124

14.08.2016, 13:26

5

@Гринго может пригодится : [URL=»https://www-01.ibm.com/support/docview.wss?uid=swg21092121″]http://www-01.ibm.com/support/docview.wss?uid=swg21092121[/NICK]

+ хелп по лотусовым классам.



0



0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

14.08.2016, 13:48

6

Цитата
Сообщение от Гринго

Список заявок в excel-файле — жесткое требование заказчика.

никак не связано с программированием под LDN

Цитата
Сообщение от Гринго

Данный список рассылается многим пользователям внутри компании, для контроля статуса заявок (ответственных за их исполнение), при этом почтовая программа в компании другая (опять же жесткое требование заказчика).

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

Цитата
Сообщение от Гринго

Установка ПО жестко регламентирована со стороны IT-службы, а макрос должен работать у любого конечного пользователя (не программиста) из группы контроля, у кого есть установленный Excel и Lotus в системе.

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

Цитата
Сообщение от Гринго

поэтому, уверен, что данная задача имеет решение

да — имеет — писать java с библиотекой POI, запускать на сервере (т.е. библиотека копируется на сервер LDN. Даже в случае огромных выборок — тормоза будут меньшими, чем при использовании COM объекта из MSO (кот. может вовсе забить доступную память)
какой бы не была массовая инсталяция LDN — отличия будут, т.к. могут отличаться групповые политики и настройки безопасности, добавим сюда изменения в безопасности, во всяких МС патчах (как пример — недавняя история, описанная на хабре)
и как правильно отметил @garrick — написать без ошибок и кастылей выгрузку из LDN, для большого кол-ва документов, может спец. В вашем варианте, для еще через COM — это будет мучительный и долгий процесс (да и ломаться, потом, будет регулярно)

Логика из ТЗ извращена до наоборот (подгоняли под низкий уровень писателей, на VBA, видать) и следовать ей, буквально — это потеря времени и сил
Вариант, описанный мной — не требует, вовсе, Excel, и будет работать на серверах, стало-быть — будет меньше «особенностей»



0



Гринги

14.08.2016, 13:48

7

@savl — спасибо!

0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

14.08.2016, 14:18

8

вспомнил, тут…
у домины вполне себе есть способ общения без KOM и называется он Domino Data Service
для того кто «привык» в VBA — «берет в руки» COM для работы с хттп и…



0



0 / 0 / 0

Регистрация: 07.02.2106

Сообщений: 812

14.08.2016, 16:39

9

Предлагаю построить в Notes вьюху, отображающую всю необходимую информацию по заявкам, открыть к ней доступ по HTTP, а в Excel воткнуть URL этой вьюхи. … а можно даже и не «втыкать» и чтобы посмотреть информацию по заявкам, ни Notes, ни даже Excel не будет нужен.



0



Гринги

15.08.2016, 12:28

10

Всем спасибо за критику и предложения, 2@savl — особенно. Реализовал, работает, достаточно шустро.
Да, не идеальное решение, его невозможно масштабировать, но такой задачи и не стоит. Даже в текущей версии это сэкономит десятки человеко-часов в месяц — за счет того, что не придется вручную открывать каждую заявку в Lotus для просмотра значений для определенных полей. Есть отдельные моменты, которые реализованы «криво», но пока не нашел, как обойти это ограничение, может подскажете

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Sub DemandParser()
 
Dim oSession As Object
Dim oDB As Object
Dim oNotesView As Variant
Dim oColumn As Variant
Dim doc As Object
Dim oItems As Variant
Dim oItem As Variant
 
Dim lngCounter As Long, lngFResult As Long, lngRow As Long
Set oSheet = ThisWorkbook.Worksheets("Data")
lngRow = oSheet.Cells(1, 3).End(xlDown).Row
If lngRow > 1000000 Then
MsgBox "Нет данных для анализа!"
Exit Sub
End If
Set oSession = CreateObject("Notes.NotesSession")
Set oDB = oSession.GetDatabase("<servername>", "<DBName>")
Set oNotesView = oDB.GetView("All")
при выполнении следующей строки выдается ошибка, приходится перебирать элементы коллекции
Set oColumn = oNotesView.Columns(5)
For Each oColumn In oNotesView.Columns
If oColumn.ItemName = "DemandNumber" Then
oColumn.IsSorted = True
Exit For
End If
Next oColumn
For lngCounter = 2 To lngRow
Application.StatusBar = "Обработка строки " & CStr(lngCounter) & " из " & CStr(lngRow)
 
sTTNumber = Left(oSheet.Cells(lngCounter, 21).Value, 6)
 
If IsNumeric(sTTNumber) Then
sSearchString = Replace("[DemandNumber] = {DemandNumber}", "{DemandNumber}", sTTNumber)
lngFResult = oNotesView.FTSearch(sSearchString)
If lngFResult = 0 Then
oSheet.Cells(lngCounter, 24).Value = "!!! Заявка не найдена"
Else
Set doc = oNotesView.GetFirstDocument
 
 
здесь реализуется соответствующая обработка
 
как получить первое значение? - аналогично ситуации выше, работает через перебор элементов коллекции
oItems = doc.GetItemValue("DemandNumber")
For Each oItem In oItems
 
Exit For
Next oItem
 
 
End If
End If
Next
Application.StatusBar = ""
MsgBox "Готово!"
Set doc = Nothyng
Set oNotesView = Nothyng
Set oDB = Nothyng
Set oSession = Nothyng
End Sub

0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

15.08.2016, 14:12

11

Цитата
Сообщение от Гринго

при выполнении следующей строки выдается ошибка, приходится перебирать элементы коллекции
Set oColumn = oNotesView.Columns(5)

зачем это? (сортировать колонку из кода)

Цитата
Сообщение от Гринго

lngFResult = oNotesView.FTSearch(sSearchString)

вам предложили почитать дизайнер хэлп, но не для поиска схожего с SQL
LDN — NoSQL БД
в нотусе, для поиска ключей, используют ключевую колонку, для чего — создают вьюшку с сортированной колонкой, по ключу (первую, можно больше одной колонки — но это др. история)
получать документ — это очень накладно для памяти и времени
во вьюшке (вернее в выборке по ключу — NotesViewEntryCollection) есть NotesViewEntry , а у него ColumnValues (типа Variant — массив значений, по колонкам)
т.е. создается спец. вьюшка, с нужной ключевой колонкой (сортированной) и колонками для нужных значенией



0



0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

15.08.2016, 14:28

12

Цитата
Сообщение от Гринго

oItems = doc.GetItemValue(«DemandNumber»)

всегда выдает массив (даже если там одно значение), нулевым элементом будет первое значение doc.GetItemValue(«DemandNumber»)(0)
НО не делайте так (причина — выше)



0



0 / 0 / 0

Регистрация: 07.02.2106

Сообщений: 812

15.08.2016, 15:18

13

Цитата
Сообщение от lmike

а у него ColumnValues (типа Variant — массив значений, по колонкам)

…но тут тоже есть тонкости, которые могут вынести мозг человеку, который не в теме и при том не читающий хелп. Я же говорил «уметь надо».



0



0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

15.08.2016, 18:10

14

Цитата
Сообщение от garrick

…но тут тоже есть тонкости, которые могут вынести мозг человеку, который не в теме и при том не читающий хелп. Я же говорил «уметь надо».

оно понятно, получается ТС сочиняет велосипед, с кривыми колесами, при том что есть легальные методы взаимодействия с платформой — через хттп
безо всяких «кривых» COM
но как я уже не раз отмечал — мышление похаченное использованием windows трудно направить в «нужное» русло



0



Гринги

15.08.2016, 20:38

15

Ситуацию нужно рассматривать с разных сторон и понимать задачу, которую просят помочь решить. Лучшее решение не всегда выигрывает у просто хорошего. Я не писал всю ситуацию, чтобы не засорять топик, но возможно, это была моя ошибка. Мне нужно простое прикладное решение, работающее — для себя и моих сотрудников. Также им поделюсь с коллегами. Не требуется промышленное «железное» решение — Lotus Notes живет в компании до конца этого года, потом будет совсем другое ПО для работы с заявками и совсем другая процедура работы с ними и текущее решение мы спокойно выкинем на свалку. На его создание я суммарно потратил 4 часа своего чистого времени.

За счет текущей, пусть «кривой», не оптимальной реализации экономия времени получилась за одну итерацию — в 180 раз (с 30 минут ручным способом до 10 секунд данным решением — обработка 170 позиций). Таких итераций — около 10 в месяц по моему направлению. Оптимизировать работу одной итерации из текущих 10 секунд до 1 секунды (условно) — это дополнительно к уже полученной экономии в 29 мин. 50 секунд добавить еще 9 секунд — с моей точки зрения, овчинка выделки не стоит.
Для этого (справедливо отмечено) действительно пришлось бы серьезно изучить документацию к Lotus, классы, проштудировать форумы. Если бы я был программистом (это уже в прошлом) — безусловно, это то, с чего бы я начал. Но на это бы у меня ушло совсем другое время, которого сейчас у меня не сказать, что много и кто бы тогда делал остальную мою работу?.

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

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

В любом случае, спасибо за конструктивную критику и советы.

0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

16.08.2016, 10:33

16

Цитата
Сообщение от Гринго

Не требуется промышленное «железное» решение — Lotus Notes живет в компании до конца этого года, потом будет совсем другое ПО для работы с заявками и совсем другая процедура работы с ними и текущее решение мы спокойно выкинем на свалку.

оно и не требовалось, в варианте с http…
просто распарсить xml/json
слезать с LDN (вот даже интересно — на что?) достаточно непростой процесс, почему-то мне кажется — заявки там не единственная БД
у нас, в организации, уж клялись уйти от домино раз 100500, прошло овер 15лет (почта давно уже на чанге)
и ШП (Share Point) разные решения пихали (тоже пытались для документ-процесса пристроить)…, но юзеры! (именно) эти убожественые решения завернули
Нам рассказывали как придет велики SAP — и будет фсё… , ога — в тысячи раз выросло кол-во эхелей на файлопомойке (уже засрали 6Тб)
Есть гейроаейский спец. кот. «доказал» — 1С более затратна (это для нашего-то законодательство), чем SAP, на секунду — внедрение решения на SAP, в нашей стране, уже обошлось (приблизительно) десятки лярдов грина

не… — разумеется, «назло кондуктору — возьму билет, сойду с трамвая, пойду пешком», могут сделать «эффективные манагеры»
эффект от этого тоже известен — велосипедные файлы с макросами и хитровынебанными формулами заполняют файло-помойки
этот путь, у нас в компании, уже проходили не раз
но как говориться — время идет, а кол-во дураков только растет… ;)
а вам — успехов, только стоило ли с вопросами по VBA приходить сюда ? ;)



0



Гринги

16.08.2016, 12:27

17

2@lmike:
SAP — тема отдельного разговора, в том виде, в котором его могут внедрить. Действительно, количество с excel-файлов с ним растет на порядок, через них пытаются закрывать дыры, которые не покрываются функционалом данной ERP. Самое интересно, что при внедрении SAP одним из аргументов приводилось то, что «мы откажемся от большого количества excel-файлов, которые у нас есть».

Куда стоило обращаться тогда? На какой форум?

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

P.S. Решение уже проверили у других пользователей, работает — для них шок, что оказывается, такое можно вообще возможно было реализовать. БД в LDN заявок реализовывала сторонняя компания еще в 2006 году, наши IT ее только поддерживают в рабочем состоянии, доработок никаких не делают, технической документации по полям не было. Так что я результатом доволен, с учетом того, что приступал к задаче ничего не зная об объектах LDN и о внутреннем устройстве данной БД в частности.

0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

16.08.2016, 13:10

18

Цитата
Сообщение от Гринго

Куда стоило обращаться тогда? На какой форум?

гугл VBA lotus notes field



0



0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

16.08.2016, 13:17

19

Цитата
Сообщение от Гринго

не зная об объектах LDN и о внутреннем устройстве данной БД в частности.

знать пришлось — т.к. COM объекты именно к этому и привязывают, а вот распарсить ответ от http сервера LDN — вполне понятный вариант
ибо там текст

Цитата
Сообщение от Гринго

БД в LDN

и вы только ради этого купили LDN (1 БД)?
я вам больше скажу — есть готовое решение на LDN — XPD называется, единственная «засада» — разработчики на украине, т.е. потенциально могут быть сложности с закупкой ПО (для России, на сайте сказано — для резидентов Украины)
про — на что менять — вы так и не сказали ;)



0



0 / 0 / 0

Регистрация: 23.08.2008

Сообщений: 6,252

16.08.2016, 13:22

20

Цитата
Сообщение от Гринго

А в целом с нестандартной обработкой

а вот для этого и есть построение архитектуры, чтобы не было (минимизировать) нестандартного
а «здесь» получается как жить на стройке — оно конечно можно, но…
и вот в чем для меня загадка…
существуют репортинговые системы (и бесплатные), есть ИТ отдел — неужто сложно построить процесс, чтобы делать все через них?!
когда «каждая кухарка» будет…, т.е. — каждый должен заниматься своими обязанностями (прямыми), а не изучением VBA, Excel, Word и т.п.
и самое смешное — везде встречаются требования — уметь пользоваться Word и Excel
Именно эти инструменты насаждаются, в то время как «никто» (>80%) ими пользоваться не умеют (и в первую голову — руководители)



0



Содержание

  1. Использование Microsoft Excel с Lotus Notes
  2. Вставка книги в документ или форму Lotus Notes
  3. Использование данных Microsoft Excel в представлениях Lotus Notes и обмен полями
  4. Соответствие свойств файла книги Microsoft Excel полям Lotus Notes

Использование Microsoft Excel с Lotus Notes

В Microsoft Excel имеются некоторые средства, которые можно использовать в документах, формах и представлениях Lotus Notes, включая поддержку обмена данными полей Notes/FX и NotesFlow.

Данные Microsoft Excel в Notes

Вставка книг в документы и формы. Для обеспечения обмена данными между Lotus Notes и Microsoft Excel можно вставить книгу Microsoft Excel в качестве внедренного объекта в документ или форму Notes. В документах книга вставляется в качестве внедренного объекта в редактируемое поле RTF. Также можно вставить книгу в качестве внедренного объекта в создаваемую форму Notes. Например, если требуется создать несколько документов Notes, содержащих одну и ту же внедренную книгу, следует вставить внедренную книгу в форму Notes при ее создании. В этом случае внедренная книга уже присутствует во всех новых документах или формах Notes, создаваемых на основе имеющейся формы.

Импорт данных Microsoft Excel в документ или форму. Чтобы включить данные из книги в документ или форму, их можно импортировать. При импорте данных Microsoft Excel в документ или форму копируются только данные. Сама книга не входит в документ или форму и не поддерживает связь с исходной книгой, являющейся источником данных.

Данные Microsoft Excel с обменом данными полей Notes

В полях Notes могут отображаться сведения о свойствах файла Microsoft Excel. Если книга Microsoft Excel вставлена в форму Notes в виде внедренного объекта, в форме Notes можно создать поля, отображающие сведения о свойствах файла книги Microsoft Excel. Максимальное число полей свойств файла из диалогового окна Свойства Microsoft Excel равно числу полей в форме Notes.

Если в документе Notes требуется использовать возможности обмена данными полей Notes/FX, документ уже должен содержать поля Notes/FX, которые необходимы для обмена данными. Невозможно вставить поля в документ Notes, они могут быть вставлены только в форму Notes. При добавлении в форму с внедренной книгой полей Notes/FX все новые документы и формы Notes, создаваемые на основе этой формы, будут обладать возможностями обмена данными полей Notes/FX.

Соответствие полей и свойств. Некоторые свойства однонаправлены: изменения, внесенные во внедренную книгу, отражаются в поле Notes, однако изменения, внесенные в поле Notes, не отражаются во внедренной книге. Например, свойство Создан файла книги Microsoft Excel является однонаправленным полем, соответствующим полю Notes «DateCreated». Изменения свойства Создан в Microsoft Excel автоматически отражаются в поле «DateCreated» документа Notes; однако изменение поля «DateCreated» документа Notes не окажет влияния на свойство Создан файла книги Microsoft Excel.

Некоторые свойства двунаправлены: изменения в книге Microsoft Excel отражаются в поле Notes, а изменения в поле Notes отражаются в книге Microsoft Excel. Двунаправленные поля обновляются во внедренной книге при открытии или активизации книги и в документе Notes при закрытии книги и возврате к документу Notes. Например, «Название» — это двунаправленное поле. При изменении свойства Название файла книги Microsoft Excel изменение отражается в поле «Title» документа Notes, а при изменении поля «Title» документа Notes — в свойстве файла книги Microsoft Excel. Поля, соответствующие дополнительным свойствам файлов книг, задаваемых пользователем, также являются двунаправленными.

Свойства файла можно использовать в представлениях. В Microsoft Excel можно создать свойство файла, связанное с именованным диапазоном ячеек. После этого можно создать соответствующее поле в Notes, чтобы содержимое именованного диапазона появилось в представлении.

Меню NotesFlow Action в книге Microsoft Excel

Lotus NotesFlow представляет собой систему управления документооборотом, обеспечивающую открытое взаимодействие между базами данных Lotus Notes и другими программами, такими как Microsoft Excel, Microsoft Word и Microsoft PowerPoint. NotesFlow можно использовать для маршрутизации форм, отправки напоминаний, подтверждений запроса и обработки, а также для запуска запланированных пакетных заданий.

Когда Microsoft Excel принимает участие в NotesFlow, слева от меню Окно появляется меню Action. Команды, содержащиеся в меню Action, отражают все возможные действия. Доступные в меню Action команды определяются способом разработки формы Lotus Notes. Если форма Lotus Notes разрабатывается для использования возможностей NotesFlow, объявляются действия, которые будут доступны в других программах, поддерживающих NotesFlow.

Для использования возможностей Lotus NotesFlow необходимо наличие Lotus Notes 4.0 или более поздних версий. Более подробные сведения об использовании Lotus NotesFlow содержатся в документации по Lotus Notes.

Вставка книги в документ или форму Lotus Notes

В Lotus Notes выберите требуемую базу данных.

Выполните шаги, соответствующие используемой версии Lotus Notes.

Откройте документ или форму, в которую требуется вставить книгу, и выполните одно из следующих действий.

Документ — в меню Создание выберите форму Lotus Notes, включающую форматируемое поле, доступное для изменения. Щелкните это поле, а затем выберите в меню Создание команду Объект.

Имеющаяся форма — в меню Вид выберите команду Конструктор. Под заголовком Конструктор в области навигации выберите раздел Формы. Дважды щелкните требуемую форму.

Новая форма — в меню Создание укажите на пункт Конструктор и выберите команду Форма.

Выполните одно из следующих действий.

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

Внедрите копию имеющейся книги — выберите команду Создание объекта из файла, а затем введите в поле Файл имя книги либо нажмите кнопку Обзор и найдите эту книгу.

Выберите один из двух режимов отображения.

Отображение листа — дважды щелкните объект Microsoft Excel, а затем щелкните другой лист.

Отображение значка книги — установите флажок показывать как значок.

Откройте документ или форму, в которую требуется вставить книгу, и выполните одно из следующих действий.

Документ — в меню Compose выберите форму Lotus Notes, включающую форматируемое поле, доступное для изменения, и щелкните это поле.

Имеющаяся форма — в меню Design выберите команду Forms, в поле Forms выберите форму, нажмите кнопку Edit, а затем щелкните в позиции, куда требуется вставить книгу.

Новая форма — в меню Design выберите команду Forms, затем нажмите кнопку New (или выберите форму в поле Forms и нажмите кнопку New Copy), а затем щелкните в позиции, куда требуется вставить книгу.

В меню Edit укажите на пункт Insert, а затем выберите команду Object.

В списке Object Type выберите тип Лист Microsoft Excel.

Чтобы изменить способ отображения книги, нажмите кнопку Display Format, выберите требуемый формат, а затем нажмите кнопку OK.

Выполните одно из следующих действий.

Вставьте новую пустую книгу — нажмите кнопку OK.

Внедрите копию имеющейся книги — нажмите кнопку Choose File, выберите требуемую книгу из списка, а затем нажмите кнопку OK.

Чтобы в документе отображался лист, дважды щелкните объект Microsoft Excel, а затем щелкните другой лист.

Использование данных Microsoft Excel в представлениях Lotus Notes и обмен полями

Отображение данных книги в представлении Lotus Notes

Чтобы данные книги отображались в представлении Lotus Notes, необходимо предварительно назначить этим данным имя, соответствующее имени поля Lotus Notes, куда будут вставлены эти данные, а также создать дополнительные свойства файла, соответствующие свойствам Lotus Notes.

Вставьте книгу Microsoft Excel в документ Notes либо, если документ Notes уже имеет форматируемое поле для связи с этой книгой, создайте форму Notes, включающую книгу.

В Lotus Notes выберите требуемую базу данных.

Выполните шаги, соответствующие используемой версии Lotus Notes.

Откройте документ или форму, в которую требуется вставить книгу, и выполните одно из следующих действий.

Документ — в меню Создание выберите форму Lotus Notes, включающую форматируемое поле, доступное для изменения. Щелкните это поле, а затем выберите в меню Создание команду Объект.

Имеющаяся форма — в меню Вид выберите команду Конструктор. Под заголовком Конструктор в области навигации выберите раздел Формы. Дважды щелкните требуемую форму.

Новая форма — в меню Создание укажите на пункт Конструктор и выберите команду Форма.

Выполните одно из следующих действий.

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

Внедрите копию имеющейся книги — выберите команду Создание объекта из файла, а затем введите в поле Файл имя книги либо нажмите кнопку Обзор и найдите эту книгу.

Выберите один из двух режимов отображения.

Отображение листа — дважды щелкните объект Microsoft Excel, а затем щелкните другой лист.

Отображение значка книги — установите флажок показывать как значок.

Откройте документ или форму, в которую требуется вставить книгу, и выполните одно из следующих действий.

Документ — в меню Compose выберите форму Lotus Notes, включающую форматируемое поле, доступное для изменения, и щелкните это поле.

Имеющаяся форма — в меню Design выберите команду Forms, в поле Forms выберите форму, нажмите кнопку Edit, а затем щелкните в позиции, куда требуется вставить книгу.

Новая форма — в меню Design выберите команду Forms, затем нажмите кнопку New (или выберите форму в поле Forms и нажмите кнопку New Copy), а затем щелкните в позиции, куда требуется вставить книгу.

В меню Edit укажите на пункт Insert, а затем выберите команду Object.

В списке Object Type выберите тип Лист Microsoft Excel.

Чтобы изменить способ отображения книги, нажмите кнопку Display Format, выберите требуемый формат, а затем нажмите кнопку OK.

Выполните одно из следующих действий.

Вставьте новую пустую книгу — нажмите кнопку OK.

Внедрите копию имеющейся книги — нажмите кнопку Choose File, выберите требуемую книгу из списка, а затем нажмите кнопку OK.

Чтобы в документе отображался лист, дважды щелкните объект Microsoft Excel, а затем щелкните другой лист.

Выполните одно из следующих действий.

В Lotus Notes 4.x щелкните правой кнопкой мыши внедренную книгу в документе или форме, а затем выберите в контекстном меню команду Открыть.

В Lotus Notes 3.x дважды щелкните внедренную книгу в документе или форме.

В Microsoft Excel щелкните лист или диаграмму, содержащую данные, которые требуется использовать в Lotus Notes, а затем выделите эти данные.

Если какие-либо ячейки с данными защищены или содержат формулы, соответствующее поле будет обновляться только в одном направлении — из Microsoft Excel в Lotus Notes. Если изменить данное поле в Lotus Notes, это никак не отразится в Microsoft Excel.

В поле Имя строки формул введите имя и нажмите клавишу ВВОД.

В меню Файл выберите команду Свойства.

Откройте вкладку Прочие.

В поле Название введите название дополнительного свойства файла.

Установите флажок Для объекта.

В поле Значение введите имя, заданное на шаге 4, и нажмите Добавить.

Создайте в форме Lotus Notes соответствующее поле. В поле Имя следует ввести название дополнительного свойства файла Microsoft Excel, а не определенное в Microsoft Excel имя.

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

Обновление полей, использующих возможности обмена данными

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

Следующие поля являются двунаправленными: Название, Тема, Автор, Ключевые слова, Описание, Группа, Учреждение, Категория и дополнительные свойства. Все остальные поля являются однонаправленными.

Выполните одно из следующих действий.

Однонаправленные поля — обновите однонаправленные поля из свойств книги.

Выполните одно из следующих действий.

В Lotus Notes 4.x щелкните правой кнопкой мыши книгу Microsoft Excel, вставленную как внедренный объект в документ или форму Lotus Notes, а затем в контекстном меню выберите команду Открыть.

В Lotus Notes 3.x дважды щелкните книгу Microsoft Excel, вставленную как внедренный объект в документ или форму Lotus Notes.

В меню Файл Microsoft Excel выберите команду Свойства.

Измените данные во всех созданных ранее дополнительных полях свойств файла.

Чтобы обновить поля Lotus Notes, связанные с этими полями свойств, сохраните и закройте книгу, а затем вернитесь в окно Lotus Notes.

Двунаправленные поля — воспользуйтесь приведенным выше способом, чтобы обновить двунаправленные поля из свойств книги, либо обновите свойства книги из полей Lotus Notes.

В Lotus Notes откройте документ, содержащий поле, которое требуется обновить.

Выделите текст в поле, которое требуется обновить.

В скобки поля введите новые данные.

Дважды щелкните внедренную в документ или форму Lotus Notes книгу Microsoft Excel, чтобы обновить свойства в этой книге.

Соответствие свойств файла книги Microsoft Excel полям Lotus Notes

Свойство книги Microsoft Excel Поле Lotus Notes – тип данных
Имя файла Имя файла (всегда пустое)
Папка Имя файла (всегда пустое)
*Название Название – Текст
*Тема Тема – Текст
*Автор Автор – Текст
*Ключевые слова Ключевые слова – Текст
*Заметки Описание – Текст
Шаблон Шаблон – Текст
*Группа Группа – Текст
*Учреждение Учреждение – Текст
*Категория Категория – Текст
Создан Создан – Время
Изменен Изменен – Время
Автор изменений Автор изменений – Текст
Размер Размер – Текст
Редакция Редакция – Число
Общее время правки Общее время правки – Число
Напечатан Напечатан – Время
Страниц Страниц – Число
Слов Слов – Число
Знаков Знаков – Число
Абзацев Абзацев – Число
Строк Строк – Число
Защита Защита – Число
Класс документа Тип – Текст
Название приложения Название приложения – Текст
*Название дополнительного свойства Название дополнительного свойства – Текст

* Двунаправленное поле (Двунаправленное поле Lotus Notes обновляется из книги Microsoft Excel и наоборот. Однонаправленное поле Lotus Notes обновляется из книги Microsoft Excel, но не наоборот).

Источник

Are you looking for different forums and various online services that provide solutions to import Excel contacts into Lotus Notes? If yes, then you don’t have to look any further. This blog describes all possible and required steps to convert Excel address book data to IBM Notes accounts.

Lotus Notes, a secure desktop-based email client application, helps millions of users send and receive messages. It not only stores emails but also includes various features like scheduling, calendar management, scheduling, forums, instant messaging, web browsing, etc. If you want to import and export contacts in Lotus Notes, you can use the vCard file format.

Because Excel files can store a lot of user information such as username, address, email address, contact number, company name, etc. The Notes-compatible vCard file format is used to store contact files and can be converted from Excel file to store a large number of contacts in Lotus accounts. For this, you Converter. As there is no direct method available to import Excel contacts to Lotus Notes account.

Steps to Import Excel Spreadsheet to Lotus Notes

Here you will get the easiest complete guide on importing contacts from Excel to VCF, which can be further imported into Lotus Notes.

Step 1: Free Download, Install and Open the Tool, Click on Browse Option

Import Excel Contacts to Lotus Notes

Step 2: Next, Select Excel XLS, CSV, XLSX File and Click on Open

Open Excel File

Step 3: Preview Microsoft Excel Contacts with Details of Selected XLSX / XLS / CSV File

Preview Excel Contacts

Step 4: In Next Windows, Map MS Excel Fields to vCard Fields. Click on Next Button

Map Contacts Attributes

Step 5: Next, Select vCard Version: 2.1, 3.0 & 4.0 and Click on Convert to start conversion Process

Import Excel Spreadsheet Contacts into Lotus Notes Contact List

All contact details from Excel files are now stored in VCF format only, which can be easily imported into Lotus Notes.

Import VCF File Contacts into Lotus Notes Address Book

Here, we will walk you through the steps to import Excel contacts to Lotus Notes application.

Step 1: Open «Lotus Notes Email Application» (Enter password to access it)

Open Application

Step 2: Click on «Contacts» from the Available Options

Import MS Excel Contacts to Lotus Notes

Step 3: Click on «More» and From the Drop Down List, Select «Import Contacts» Option

More

Step 4: Select VCF File From Local Machine and Click on «Open»

VCF

Step 5: If VCF File Has More Than 250 Contacts, A Pop-up Window will Appear Asking if You Want to continue, click «Yes»

250 Contacts

Step 6: Now, VCF Contained Contacts Will be Shown in Preview Window, Click on «Import»

Import MS Excel Spreadsheet into Lotus Notes

Step 7: When the Conversion Procedure Gets Completed, A Pop-window will Appear Showing the Successful Importing of Contacts

Import MS Excel Spreadsheet Contacts into Lotus Notes

Step 8: Finally Check the Imported Contacts in Lotus Notes

Import MS Excel Contacts into Lotus Notes

Concluding Lines

Most of the users are looking for a secure solution to import Excel contacts into Lotus Notes. In this blog, we describe a complete solution to transfer contacts from Excel to Lotus Notes. Moreover, no technical knowledge or guidance is required to operate this latest software, so every technical and non-technical user can easily use the tool without any issues. Users can opt for this software to perform quick and easy data conversion.

Понравилась статья? Поделить с друзьями:
  • Lotus notes в excel это
  • Love is just word lyrics
  • Lotus notes to word
  • Love is just another word i never learned to pronounce
  • Lotus note vba excel