(lotusscript) Вставка значений текущей карточки документа в Ms Word

  • Автор темы DEN888
  • Дата начала
D

DEN888

#1
Подскажите пожалуйста, как вставить значения полей текущей (или по имени, выборочно) карточки документа (например форма MyFrm, значение полей CompanyName, FIO) в MS Word?

Отчет формирую по шаблону
Код:
Dim Word As Variant
Dim WorDoc As Variant

Set Word = CreateObject("Word.Application") 
Call Word.documents.add("My.dot") 
Set WordDoc = Word.activedocument 

worddoc.FormFields(1).result = ' Значение CompanyName
worddoc.FormFields(2).result = ' Значение FIO

word.visible = True
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
Код:
dim ws as new notesuiworkspace
dim uidoc as notesuidocument
dim doc as notesdocument
set uidoc = ws.Currentdocument
set doc = uidoc.document

Dim Word As Variant
Dim WorDoc As Variant

Set Word = CreateObject("Word.Application") 
Call Word.documents.add("My.dot") 
Set WordDoc = Word.activedocument 

worddoc.FormFields(1).result = doc.GetItemValue("CompanyName")(0) ' Значение CompanyName
worddoc.FormFields(2).result = doc.GetItemValue("FIO")(0) ' Значение FIO

word.visible = True
это если печать из документа


http://codeby.net/forum/threads/11924.html - ознакомтесь
 
D

DEN888

#4
спасибо за помощь, есть еще проблемка, а как сделать запрет редактирования полученного Word' го документа, пользователю...(Например установить на изменение пароль, знаю что есть Documents.Protect, а вот как его реализовать в скрипте, не получается)
 

morpheus

скриптописец
07.08.2006
3 915
1
#5
у вордовского AciteDocumen есть метод протекта.


Protect Method
See AlsoApplies ToExampleSpecificsHelps to protect the specified document from changes. When a document is protected, users can make only limited changes, such as adding annotations, making revisions, or completing a form.

Note If the document is already protected when you use this method, an error occurs.

expression.Protect(Type, NoReset, Password, UseIRM, EnforceStyleLock)
expression Required. An expression that returns a Document object.

Type Required. The protection type for the specified document. WdProtectionType.

WdProtectionType can be one of these WdProtectionType constants.
wdAllowOnlyComments
wdAllowOnlyFormFields
wdAllowOnlyReading
wdAllowOnlyRevisions
wdNoProtection

NoReset Optional Variant. False to reset form fields to their default values. True to retain the current form field values if the specified document is protected. If Type isn't wdAllowOnlyFormFields, the NoReset argument is ignored.

Password Optional Variant. The password required to remove protection from the specified document. (See Remarks below.)

UseIRM Optional Variant. Specifies whether to use Information Rights Management (IRM) when protecting the document from changes.

EnforceStyleLock Optional Variant. Specifies whether formatting restrictions are enforced in a protected document.

Remarks
Security Avoid using hard-coded passwords in your applications. If a password is required in a procedure, request the password from the user, store it in a variable, and then use the variable in your code. For recommended best practices on how to do this, see Security Notes for Microsoft Office Solution Developers.

Example
This example protects the active document for forms without resetting the contents of the form fields.

If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True
End If
This example protects Monthly Report.doc so that only comments can be added to it. The password is required to unprotect the document.

Set myDoc = Documents("Monthly Report.doc")
myDoc.Protect Type:=wdAllowOnlyComments, Password:=strPassword
 
D

DEN888

#6
спасибо за оперативность,
в LotusScript, опыта маловато, подскажите пожалуйста, при формировании отчета по шаблону,
можно установить свойство Protect или только перед сохранением, если можно пример?
Код:
Sub Click(Source As Button)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim ws As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Set uidoc = ws.Currentdocument
Set doc = uidoc.document
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Word As Variant
Dim WorDoc As Variant
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set Word = CreateObject("Word.Application")
Call Word.documents.add("C:\My.dot")
Set WordDoc = Word.activedocument	
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
worddoc.FormFields(1).result = doc.GetItemValue("CompanyName")(0) 

word.visible = True	
End Sub
 
D

DEN888

#8
не пойму в чем ошибка, при копиляции выдает ошибку lllegal use of parentheses
Код:
Sub Click(Source As Button)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim ws As New notesuiworkspace
Dim uidoc As notesuidocument
Dim doc As notesdocument
Set uidoc = ws.Currentdocument
Set doc = uidoc.document
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Word As Variant
Dim WorDoc As Variant
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set Word = CreateObject("Word.Application")
Call Word.documents.add("C:\My.dot")
Set WordDoc = Word.activedocument	
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
worddoc.FormFields(1).result = doc.GetItemValue("CompanyName")(0)
worddoc.Protect(1,"123")
'1=wdAllowOnlyComments
'123=пароль
word.visible = True	
End Sub
 
D

DEN888

#10
Да пробывал, такая же ошибка, если указать без 2 последних параметров
worddoc.Protect(1)
нормально компилится, да защита включена, только если нажать кнопку отключить защиту без пароля отключает..
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#11
Ошибка говорит о том, что нужно Call использовать.
 
D

DEN888

#13
Приветствую..

подскажите пожалуйста, как вытащить значение поля тип Rich Text (Body) в Word
doc.GetItemValue("Body")(0) выводит пустое значение...
 

morpheus

скриптописец
07.08.2006
3 915
1
#14
можете попробовать через NotesItem.Text

For rich text items, this property skips non-text data such as bitmaps and file attachments.
 
D

DEN888

#17
вообщем решил сделать так, набросал в форме нужные мне поля, в том числе и RichText, подогнал к нужной мне форме, из документа по кнопке вызываю форму, в форме по кнопке кидаю в Word, методом Copy - Paste....

Вот незадача идет двойное отображение инфы, тоесть сперва отображается в Лотусе, затем в Word, можно ли сделать так, сперва открылась форма, скопировал в буфер, закрыть форму и отобразить Word? (История с Word'ом пошла так как в форме нет возможности использовать колонтитулы, свойство Printing (Header/Footer) печатной формы не подходит)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#18
не понимаю - почему нужно использовать ворд?

про ОО уже упоминал...

ежели и это не подходит (хотя странно), то используем стандарт - PDF

методов несколько, два из них мне более импонируют:
- голый iText
- UJAC - XML "обвязка" для иТекста http://ujac.sourceforge.net/
там есть и готовые экзампелы, в ХМЛ реализованы циклы, переменные и т.п.
на выходе получаем PDF http://ujac.sourceforge.net/html/print-examples.html
кастом теги и кода-то прийдется чуть написать, остальное - XML формировать
 
D

DEN888

#19
не понимаю - почему нужно использовать ворд?
История с Word'ом пошла так как в печатной форме нет возможности использовать колонтитулы, свойство Printing (Header/Footer) печатной формы не подходит

как примерно это можно реализовать в Lotus, можно пример....
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#20
пример чего?
Вы вот что делаете по шагам (отвязано от кода)?

я могу описать так:
- берем текст из дока нотуса формируем его как ХМЛ, согласно пр-лам библиотеки и своим видениям форматирования
- натравливаем на него код типа отсюда: http://ujac.sourceforge.net/html/print-documentation.html (можно в агент забубенить)
- полученный PDF цепляем в форму (в кот. активирована опция Auto Launch -First Attachment-)
- открываем док wks.EditDocument(...)
наслаждаемся полученным PDF :rolleyes:

да, забыл - придется писать на java, и подключать к проекте (есть такая опция в дизайнере) два jar файла ( ujac.jar, iText.jar)

и про ОпенОфис - ответа я не получил (там и пример использования шаблона есть)