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

Тема в разделе "Lotus - Программирование", создана пользователем DEN888, 4 сен 2008.

  1. DEN888

    DEN888 Гость

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

    Отчет формирую по шаблону
    Код (Text):
    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
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Код (Text):
    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 - ознакомтесь
     
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
  4. DEN888

    DEN888 Гость

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    у вордовского 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
     
  6. DEN888

    DEN888 Гость

    спасибо за оперативность,
    в LotusScript, опыта маловато, подскажите пожалуйста, при формировании отчета по шаблону,
    можно установить свойство Protect или только перед сохранением, если можно пример?
    Код (Text):
    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
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    worddoc.FormFields(1).result = doc.GetItemValue("CompanyName")(0)

    WordDoc.Protect ... - враоде как тут

    word.visible = True


    незнаю, попробуйте
     
  8. DEN888

    DEN888 Гость

    не пойму в чем ошибка, при копиляции выдает ошибку lllegal use of parentheses
    Код (Text):
    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
     
  9. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    worddoc.Protect(1,,"123")
     
  10. DEN888

    DEN888 Гость

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

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ошибка говорит о том, что нужно Call использовать.
     
  12. DEN888

    DEN888 Гость

    Да точно, спасибо...
     
  13. DEN888

    DEN888 Гость

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

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

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    можете попробовать через NotesItem.Text

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

    DEN888 Гость

    а пример, можно
     
  16. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    так в хэлпе ж есть

    Код (Text):
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument

    Set uidoc =ws.currentdocument
    Set doc = uidoc.Document
    Call uidoc.Refresh(True)
    Dim item As NotesItem
    Dim contents As String
    Set item = doc.GetFirstItem( "body" )
    Msgbox item.Text
     
  17. DEN888

    DEN888 Гость

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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    не понимаю - почему нужно использовать ворд?

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

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

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

    DEN888 Гость

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

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.075
    Симпатии:
    300
    пример чего?
    Вы вот что делаете по шагам (отвязано от кода)?

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

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

    и про ОпенОфис - ответа я не получил (там и пример использования шаблона есть)
     
Загрузка...
Похожие Темы - (lotusscript) Вставка значений
  1. hosm
    Ответов:
    1
    Просмотров:
    4.965
  2. Dragon108
    Ответов:
    1
    Просмотров:
    472
  3. vitte
    Ответов:
    8
    Просмотров:
    728
  4. k85
    Ответов:
    2
    Просмотров:
    681
  5. lionk
    Ответов:
    6
    Просмотров:
    758

Поделиться этой страницей