• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

DEN888

Подскажите пожалуйста, как вставить значения полей текущей (или по имени, выборочно) карточки документа (например форма 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
 
M

morpheus

Код:
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

это если печать из документа


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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
рекомендовал бы (также) ознакомится с кроссплатформенным МС-независимым решением (основан на OO):
 
D

DEN888

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

morpheus

у вордовского 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

спасибо за оперативность,
в 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

не пойму в чем ошибка, при копиляции выдает ошибку 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

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Ошибка говорит о том, что нужно Call использовать.
 
D

DEN888

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

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

morpheus

можете попробовать через NotesItem.Text

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

DEN888

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

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
не понимаю - почему нужно использовать ворд?

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

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

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

DEN888

не понимаю - почему нужно использовать ворд?

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

- UJAC - XML "обвязка" для иТекста

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
пример чего?
Вы вот что делаете по шагам (отвязано от кода)?

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!