Выгрузка в Ворд

Тема в разделе "Lotus - Программирование", создана пользователем Kizarek86, 14 авг 2007.

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    http://codeby.net/forum/threads/11924.html с темкой ознакомился, но немного непонятно.
    Там есть шаблон, который как я понимаю необходимо поместить в папку с вордом.

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

    Если есть у кого инфа по выгрузке и редактированию документов из Лотуса в Ворд, буду очень благодарен.
     
  2. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-kizarek+14:08:2007, 09:08 -->
    <span class="vbquote">(kizarek @ 14:08:2007, 09:08 )</span><!--QuoteEBegin-->к тому же их необходимо будет поместить всем пользователям на компьютеры,
    [snapback]75259" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    неверно,шаблоны ворда могут соджержаться в отдельной базе, а оттуда просто можно их ложить в темповую папку на лок. машине юзера,и по этому шаблону создавать вордовский документ.

    <!--QuoteBegin-kizarek+14:08:2007, 09:08 -->
    <span class="vbquote">(kizarek @ 14:08:2007, 09:08 )</span><!--QuoteEBegin-->который содержить несколько строк текста и таблицу
    [snapback]75259" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    ну тады лучше эксель, что бы с таблицами не париться


    <!--QuoteBegin-kizarek+14:08:2007, 09:08 -->
    <span class="vbquote">(kizarek @ 14:08:2007, 09:08 )</span><!--QuoteEBegin-->Как лучше реализовать данный алгоритм?
    [snapback]75259" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    зделать вордовский шаблон, натыкать полей, и по полям вносить значения


    Пример фу-ции , которая из безы с шаблоами вытягивает нужный и кладёт его в локал

    Код (Text):
    Function UpdateFile(fname As String, db As NotesDatabase) As String
    Print "Відновлення шаблона..."
    Dim workspace As NotesUIWorkspace
    UpdateFile = ""
    On Error Goto err1

    Dim view As NotesView
    Set view = db.Getview("(file)")
    Set templatedoc = view.Getdocumentbykey( fname )
    If templatedoc Is Nothing Then
    Set workspace = New NotesUIWorkspace
    Call workspace.Prompt(PROMPT_OK, _
    "Ошибка!", "Шаблон отчета не знайден!" & Chr(10) & fname , 16 , "Друк" )    
    Exit Function
    End If
    'Выкладывание в директорию пользователя
    Dim RTItem As Variant
    Set RTItem = templatedoc.GetFirstItem( "Body" )
    Dim object As NotesEmbeddedObject
    Set object = RTItem.GetEmbeddedObject( fname )
    Dim TempDir As String
    TempDir = Cstr(Environ("Temp"))

    Dim TempFile As String
    TempFile = TempDir$ + "\" + templatedoc.NameDisk(0)
    Call object.ExtractFile( TempFile )
    UpdateFile = TempFile
    If Len( templatedoc.IsCustomRepost(0) ) > 0 Then
    If templatedoc.IsCustomRepost(0) = "1" Then IsCustomReport = True
    End If
    Exit Function

    err1:
    If Err = 75 Then
    Err = 0
    Resume Next
    End If
    Print Err;Error$
    Err=0
    Exit Function
    End Function
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Кстати, можно обойтись без сохранения файла-шаблона на локальный компьютер. Для экселя работает. Для ворда тоже должно.
     
  4. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-Medevic+14:08:2007, 09:35 -->
    <span class="vbquote">(Medevic @ 14:08:2007, 09:35 )</span><!--QuoteEBegin-->Кстати, можно обойтись без сохранения файла-шаблона на локальный компьютер
    [snapback]75264" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Можно подробнее?
     
  5. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Morpheus, за код спасибо, попозжее разберусь что там да как.

    Код (Text):
    Set word = CreateObject("Word.Application") 'Создание объекта Word'a
    Call word.documents.add("Return and Uplift.dot") 'Создание нового документа по шаблону Return and Uplift.dot
    Set worddoc = word.activedocument 'Активация объекта
    ругаицо на этот кусок кода при выполнении его. Возможно ли шаблон брать из указанного места?
    С:\Tmp\Return and Uplift.dot например? у меня не получилось.

    Medevic, буду благодарен если поподробнее немного расскажешь.
     
  6. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-kizarek+14:08:2007, 09:49 -->
    <span class="vbquote">(kizarek @ 14:08:2007, 09:49 )</span><!--QuoteEBegin-->ругаицо на этот кусок кода при выполнении его. Возможно ли шаблон брать из указанного места?
    [snapback]75267" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Канчено, имено для этого и служит приведёная мною функция

    Call exApp.Workbooks.Add( UpdateFile("Имя-шаблона_в_базе_шаблонов", ndShablony ) )
    - это приблизительный синтаксис
     
  7. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Morpheus

    Код (Text):
    Function UpdateFile(fname As String, db As NotesDatabase) As String

    немного не понятно...т.е. нужно создавать ещё одну БД, в которой будут храниться шаблоны? тогда каким образом fname там будет определяться?
    Проблема ещё вот в чём, у всех пользователей закрыт доступ к системному диску.
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Morpheus+14:08:2007, 10:45 -->
    <span class="vbquote">(Morpheus @ 14:08:2007, 10:45 )</span><!--QuoteEBegin-->Можно подробнее?
    [snapback]75265" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Можно. Всё дело в способе внедрения объекта.
    У нас есть документ и РТ-поле в нем. Объект вставляем в РТ-поле через меню Create->Object. Там выбираем или Microsoft Excel Sheet, или что-то другое, или из готового файла-шаблона. Не имеет особого значения. Ставим галку Display as icon. Дальше настраиваем, если надо, открывшийся объект, сохраняем его, сохраняем документ.
    А дальше делаем так:
    Код (Text):
    Dim rti As NotesRichTextItem
    Dim neo As NotesEmbeddedObject
    Dim xl As Variant
    Dim xlWbk As Variant
    Dim xlTWbk As Variant
    Dim xlSheet As Variant

    Set neo = rti.EmbeddedObjects(0) 'получаем документ с шаблоном, и РТ-поле rti.
    Call neo.Activate(False)
    Set xlTWbk = neo.Object 'это книга из шаблона
    Set xl = xlTWbk.Application
    Set xlWbk = xl.Workbooks.Add 'добавляем новую книгу

    xlTWbk.WorkSheets.Copy(xlWbk.Sheets(1)) 'копируем страницы
    xlTWbk.Close 'закрываем книгу с шаблоном

    Set xlSheet = xlWbk.Worksheets(1) 'ну а дальше как обычно
    ...
    xl.Visible = True
    Все настройки страницы сохраняются (в том числе и печати). Но пролетаем с макросами рабочей книги(но не с макросами страницы).
     
  9. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic, всё равно не совсем понятно. Есть некотрый документ в лотусе (который и необходимо перегнать в ворд для печати). Делаем так, в каждом таком документе добавляем шаблон (к примеру некоторую иконку где то с боку), и что нам это собственно даёт?не сталкивался с таким просто ниразу, поэтому многое непонятно(

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

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: kizarek
    Я не знаю, как тебе надо. Если у тебя на каждый документ нужно отдельный шаблон, то помещаешь шаблон в каждый документ (в ричтекст поле как я писал выше). Если шаблон один для всех, то помещаешь шаблон в отдельный документ.
     
  11. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic, Шаблоны разные для разных форм. непонятен алгоритм действий и для чего он делается. Формы уже есть, из них необходимо составлять Вордовские документы, а не из вордовских шаблонов составлять документы. Нужно чтобы при клике на определенную кнопку, текущий документ перегонялся в ворд.
     
  12. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-kizarek+14:08:2007, 11:43 -->
    <span class="vbquote">(kizarek @ 14:08:2007, 11:43 )</span><!--QuoteEBegin-->Нужно чтобы при клике на определенную кнопку, текущий документ перегонялся в ворд.
    [snapback]75286" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Код (Text):
    'Создание Word-документа
    Set word = CreateObject("Word.Application") 'Создание объекта Word'a
    Call word.documents.add("Return and Uplift.dot") 'Создание нового документа по шаблону Return and Uplift.dot
    Set worddoc = word.activedocument 'Активация объекта

    'Присваивание полям-Word'a значений из полей notes-документа
    worddoc.FormFields(1).result = todaysdate
    worddoc.FormFields(2).result = orderid

    где
    worddoc.FormFields(1).result = todaysdate
    worddoc.FormFields(2).result = orderid

    есть не что иное как поля текущего документа!
     
  13. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: kizarek
    Какой алгоритм действий непонятен? В первом посте по ссылке приводится пример. У тебя он работает?
     
  14. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic, нет не работает, шаблон кинул в папку офисовских шаблонов.
    Код (Text):
    Function UpdateFile(fname As String, db As NotesDatabase) As String
    Создаёться отдельная БД с шаблонами которая будет храниться на сервере как я понимаю, и с локальных мест данный код будет брать шаблон с серверной БД шаблонов, это понятно. непонятно в каком виде должны храниться эти шаблоны на сервере в БД или нет, если в БД то каким образом?

    <!--QuoteBegin-Medevic+14:08:2007, 12:07 -->
    <span class="vbquote">(Medevic @ 14:08:2007, 12:07 )</span><!--QuoteEBegin-->Можно. Всё дело в способе внедрения объекта.
    У нас есть документ и РТ-поле в нем. Объект вставляем в РТ-поле через меню Create->Object. Там выбираем или Microsoft Excel Sheet, или что-то другое, или из готового файла-шаблона. Не имеет особого значения. Ставим галку Display as icon. Дальше настраиваем, если надо, открывшийся объект, сохраняем его, сохраняем документ.
    А дальше делаем так:
    [snapback]75281" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну внедрить то я могу РТ-поле, что дальше то с ним делать и куда его внедрять непонятно.
     
  15. Гость

    А зачем вообще с вордом заморачиваться? Можно все формализовать средствами Лотуса. Создается форма на которой будет текст и шапка таблицы (или что там еще), создается форма которая содержит только строчку таблицы. Все документы открываются с помощью этой формы и перегоняются в ричтекст. Создается документ, в который помещается "шапка" таблицы и все строки таблицы, также можно добавить текст после таблицы по необходимости. Полученный документ распечатывать средствами Ноутс...
     
  16. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Ерюков Алексей, просто в базе всё цветастенько и довольно громоздко. К тому вордовские доки могут и пригодиться(незнаю правда как, но начальству потребовалось).
    Не работает пример ссылка на который в первом посте, выдаёт ошибку: "данная команда недоступна, т.к. не открыт ни один документ". Шаблон кинул в папку шаблонов Ворда.уже всё перепробывал, подскажите что не так делаю?
     
  17. IsAvailable

    IsAvailable Гость

    Предлагаю создать некую форму, в которой только два поля:
    1. Название
    2. RT поле
    хранить по такой форме некие заготовки вордовских файлов.
    При выгрузке выбирать документ по названию, извлекать аттач в тэмповую папку пользователя, открывать в Ворде и потом уже с помощью typetext и Find.Text объекта Selection вносить информацию в Ворд. Пусть потом уж что хотят с этим документом пусть и делают. Хоть сохраняют, хоть удаляют.
     
  18. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    В Нотес выравнивание по горизонту - еще туда-сюда, а вот по вертикали - слабовато. А иногда - нужно (типа бланков). Вот тут и вспоминаешь всяки M$
     
  19. Гость

    <!--QuoteBegin-Constantin A Chervonenko+20:08:2007, 02:03 -->
    <span class="vbquote">(Constantin A Chervonenko @ 20:08:2007, 02:03 )</span><!--QuoteEBegin-->В Нотес выравнивание по горизонту - еще туда-сюда, а вот по вертикали - слабовато. А иногда - нужно (типа бланков). Вот тут и вспоминаешь всяки M$
    [snapback]75693" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    а таблицы на что придуманы? и по вертикали можно организовать приличное выравнивание...
     
  20. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Вот как раз по горизонту они хорошо равняют. А по вертикали... У Лотус-UI парадигма а-ля Web, т.е. если что не влазит -> док-т растет в длину.

    А невлезть может что угодно, просто, к примеру, от различия фонтов у дезигнера и юзера
     
Загрузка...

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