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

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
https://codeby.net/threads/11924.html с темкой ознакомился, но немного непонятно.
Там есть шаблон, который как я понимаю необходимо поместить в папку с вордом.

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

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

morpheus

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


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

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Кстати, можно обойтись без сохранения файла-шаблона на локальный компьютер. Для экселя работает. Для ворда тоже должно.
 
M

morpheus

<!--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]
Можно подробнее?
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
Morpheus, за код спасибо, попозжее разберусь что там да как.

Код:
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, буду благодарен если поподробнее немного расскажешь.
 
M

morpheus

<!--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 ) )
- это приблизительный синтаксис
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
Morpheus

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


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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--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. Дальше настраиваем, если надо, открывшийся объект, сохраняем его, сохраняем документ.
А дальше делаем так:
Код:
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
Все настройки страницы сохраняются (в том числе и печати). Но пролетаем с макросами рабочей книги(но не с макросами страницы).
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
Medevic, всё равно не совсем понятно. Есть некотрый документ в лотусе (который и необходимо перегнать в ворд для печати). Делаем так, в каждом таком документе добавляем шаблон (к примеру некоторую иконку где то с боку), и что нам это собственно даёт?не сталкивался с таким просто ниразу, поэтому многое непонятно(

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: kizarek
Я не знаю, как тебе надо. Если у тебя на каждый документ нужно отдельный шаблон, то помещаешь шаблон в каждый документ (в ричтекст поле как я писал выше). Если шаблон один для всех, то помещаешь шаблон в отдельный документ.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
Medevic, Шаблоны разные для разных форм. непонятен алгоритм действий и для чего он делается. Формы уже есть, из них необходимо составлять Вордовские документы, а не из вордовских шаблонов составлять документы. Нужно чтобы при клике на определенную кнопку, текущий документ перегонялся в ворд.
 
M

morpheus

<!--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]
Код:
'Создание 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

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

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
Для: kizarek
Какой алгоритм действий непонятен? В первом посте по ссылке приводится пример. У тебя он работает?
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
Medevic, нет не работает, шаблон кинул в папку офисовских шаблонов.
Код:
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]
Ну внедрить то я могу РТ-поле, что дальше то с ним делать и куда его внедрять непонятно.
 
G

Guest

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

Kizarek86

Green Team
20.07.2007
875
8
BIT
118
Ерюков Алексей, просто в базе всё цветастенько и довольно громоздко. К тому вордовские доки могут и пригодиться(незнаю правда как, но начальству потребовалось).
Не работает пример ссылка на который в первом посте, выдаёт ошибку: "данная команда недоступна, т.к. не открыт ни один документ". Шаблон кинул в папку шаблонов Ворда.уже всё перепробывал, подскажите что не так делаю?
 
I

IsAvailable

Предлагаю создать некую форму, в которой только два поля:
1. Название
2. RT поле
хранить по такой форме некие заготовки вордовских файлов.
При выгрузке выбирать документ по названию, извлекать аттач в тэмповую папку пользователя, открывать в Ворде и потом уже с помощью typetext и Find.Text объекта Selection вносить информацию в Ворд. Пусть потом уж что хотят с этим документом пусть и делают. Хоть сохраняют, хоть удаляют.
 
30.05.2006
1 345
12
BIT
0
А зачем вообще с вордом заморачиваться? Можно все формализовать средствами Лотуса.
В Нотес выравнивание по горизонту - еще туда-сюда, а вот по вертикали - слабовато. А иногда - нужно (типа бланков). Вот тут и вспоминаешь всяки M$
 
G

Guest

<!--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]
а таблицы на что придуманы? и по вертикали можно организовать приличное выравнивание...
 
30.05.2006
1 345
12
BIT
0
а таблицы на что придуманы? и по вертикали можно организовать приличное выравнивание...
Вот как раз по горизонту они хорошо равняют. А по вертикали... У Лотус-UI парадигма а-ля Web, т.е. если что не влазит -> док-т растет в длину.

А невлезть может что угодно, просто, к примеру, от различия фонтов у дезигнера и юзера
 
Мы в соцсетях:

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