0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
1

Из лотуса в ворд

25.03.2008, 10:36. Показов 44777. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу сорри за поднятие темы которую и так часто поднимают.

По форуму искал решений нашол много, старых и не очень но окончательной реализации которая меня устроила ненашол.

хочу зделать так:
есть документ(лотус) "Форма печати" в котором лежит оле обект вордовского документа в которм нужно заменить поля на значения из лотус документа что выгружаем.

вод код кнопки печати
и он не работает, не возможно достучатся к обекту ворда, он есть но ниже уровня word.Application.document опустится нельзя.

разбирался как єто делается в екселе там документ сохраняется на диск, инициализируется и потом сохранение убивается.

добавил механизм сохранения и переоткрытия, всё зарабоало, но открывается мой док и ещё один, и на диске остаётся файл, удалить его нельзя бо занят вордом.

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


Код
            Set formdoc=GetPrintFormByAlias ("Word")
If formdoc Is Nothyng Then
Print "doc for report is Nothyng !"
Exit Sub
End If

Set rtitem=formdoc.GetfirstItem("PrintFormBody")
Set object=rtitem.EmbeddedObjects(0)
Print "Инициализация " & object.Class & " ..."

Set worddoc=object.Activate(False)

Set word=worddoc.Application


v=Evaluate(|@Unique+".doc"|)
Path=word.Path+"\"+Cstr(v(0))
Call worddoc.SaveAs(path)

Call word.Application.documents.Open(path)

Kill Path

worddoc.FormFields(1).result = "!!!!!!!!!!!!!!!!!!!!!!"

worddoc.Application.Visible = True
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.03.2008, 10:36
Ответы с готовыми решениями:

Ошибка лотуса
Добрый день. Есть один какой-то глючный документ. Я его открываю, отображается половина...

Smtp Лотуса
Всем привет! возможно опять глупый вопрос :( Есть скрипт, который занимается рассылкой...

Ошибки Лотуса
Привет, всем. Если кто может помогите. Я новичок в Лотусе у меня сложилась ситуация я пытаюсь...

Скорость Лотуса
Как быстро лотус будет шевелится у клиента если сервер далеко, и подключение через IP сервера?

27
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
25.03.2008, 10:39 2
lionk
Так-с .. я не осилиил, вроде как направление правильное ( тоже что и Set wordApp = CreateObject ("Word.Application") )
Детальное описания методов/свойств классов сматрите в справке к VBA
Можете также ознакомиться с нашими наработками
0
0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
25.03.2008, 10:50 3
Morpheus
я это всё читал
нужно чтобы файл не сохранялся на диске, или у вас есть механизм подчистки?
а что за справка VBA?
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
25.03.2008, 10:57 4
Цитата Сообщение от lionk
нужно чтобы небыло лишнего дока в памяти и на диске.
ну это можно просто убить файл ( средствами лотуса kill )

перед этим надо ыйти из ворда через вордовский Quit

Вот это и есть Call word.Application.documents.Open(path) - VBA ( Visual Basic for Applications ). Когда устанавливаете офис, поставте галочку справка по VBA там всё детально расписанно

ну и шо такое VBA
0
0 / 0 / 0
Регистрация: 19.07.2007
Сообщений: 1,098
25.03.2008, 11:02 5
lionk
http://msdn2.microsoft.com/en-us/isv/bb190538.aspx
0
0 / 0 / 0
Регистрация: 29.04.2006
Сообщений: 364
25.03.2008, 11:42 6
так а у Вас ворд документ создается на основе шаблона?
у меня на сервере лежат шаблоны (.dot) в них я забила поля
а через Script library поля эти заполняются:
bookmark01="enternumber" -поле в документе
.Selection.GoTo wdGoToBookmark, , , bookmark01
.Selection.TypeText yshnumber
если у Вас похожая задача, то могу расписать подробнее
0
0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
25.03.2008, 11:51 7
oxystile
кинь код
как ты создаёш новый документ на основе шаблона
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
25.03.2008, 11:55 8
lionk

Код
Sub OpenExcel( FilePath )
Print "Відкриття Excel..."
Set exApp = CreateObject("Excel.Application")
If exApp Is Nothyng Then Messagebox "Не встановленний Excel!!!", 0 + 16 , "Друк"
exApp.Visible = False  видно или нет
Call exApp.Workbooks.Add( FilePath )
Set exWb = exApp.ActiveWorkBook
Set Sh = exWb.Sheets(1)
End Sub
где FilePath - путь к шаблону
0
0 / 0 / 0
Регистрация: 29.04.2006
Сообщений: 364
25.03.2008, 12:32 9
см. в ScriptLibraries
(файл прицеплен)

сам шаблон .dot с полями не удалось прицепить, пишет "нет прав на прицепку таких вложений"
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
25.03.2008, 12:36 10
Цитата Сообщение от oxystile
ам шаблон .dot с полями не удалось прицепить, пишет "нет прав на прицепку таких вложений"
архивируйте
0
0 / 0 / 0
Регистрация: 29.04.2006
Сообщений: 364
25.03.2008, 12:45 11
шаблон, оставила фактически только поля
0
0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
25.03.2008, 13:15 12
спасибо за пример.

там ты просто открываеш документ с сервера.

в екселе создают книгу на оспове книги Call exApp.Workbooks.Add( FilePath )

а в ворде word.Application.documents.add(path) - открывает док в рамках приложения занимая тем самым файл
который мне надо удалить

вопрос дня
как создать новый документ на основе другого документа?
0
25.03.2008, 14:45 13
Да разные есть способы. Что конкретно Вам надо? Можно же не на основе шаблона создавать, а на основе прикрепленного doc файла. Можно хоть открыть любой doc документ и скопировать все его содержимое в новый документ. По-моему Вам были даны исчерпывающие ответы и даже примеры.
0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
25.03.2008, 18:12 14
Ерюков Алексей
я хочу создавать на основе шаблона что находится на локальном диске, и поєтому прямой вопрос

как програмно создать ворд документ на основе другого документа такми образом, чтобы шаблонный документ после зоздания был освобождён вордом и мог быть удалён?
0
0 / 0 / 0
Регистрация: 19.07.2007
Сообщений: 1,098
25.03.2008, 18:19 15
Цитата Сообщение от lionk
Ерюков Алексей
я хочу создавать на основе шаблона что находится на локальном диске, и поєтому прямой вопрос

как програмно создать ворд документ на основе другого документа такми образом, чтобы шаблонный документ после зоздания был освобождён вордом и мог быть удалён?
Выкладываете шаблон (как обычний аттач) по нужному Вам пути (обычно используют темповые папки), делаете с выложенным файлом что хотите и открываете пользователю.
С самим шаблоном ничего при этом не произойдет...
0
26.03.2008, 08:58 16
Цитата Сообщение от lionk
Ерюков Алексей
я хочу создавать на основе шаблона что находится на локальном диске, и поєтому прямой вопрос

как програмно создать ворд документ на основе другого документа такми образом, чтобы шаблонный документ после зоздания был освобождён вордом и мог быть удалён?
Вы же сами написали в первом своем сообщении, что у Вас есть документ, в котором ваш шаблон. Насколько я понял он у вас там приаттачен. Вам надо выполнить совет Sandr и будет Вам счастье!
Вот что то вроде того:


Код
    Set TemplateDoc = db.GetProfileDocument("($BlankTemplate)")
If TemplateDoc Is Nothyng Then
Messagebox "Профильный документ не найден", MB_OK + MB_ICONSTOP, "ERROR!"
Exit Sub
End If

Set rtitem = TemplateDoc.GetFirstItem("Document")
If rtitem Is Nothyng Then
Messagebox "Шаблон не найден, проверьте настроики шаблона", MB_OK, "Внимание"
Exit Sub
End If

path = "путь к Вашему файлу(обычно Temp папка)"

Set TemplateObject = rtitem.EmbeddedObjects(0)
Call TemplateObject.ExtractFile (path & "\document.doc")

Создание Word-документа

Dim wordObject As Variant

Set wordObject = CreateObject("Word.Application") Создание объекта Worda
Call wordObject.documents.add(path & "\document.doc") открытие документа
Set WordDoc = wordObject.activedocument Активация объекта
WordObject.Visible = False Сделать видимым окно Worda
Set Word = WordDoc.Application
и дальше уже распоряжайтесь с ним по своему усмотрению
0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
26.03.2008, 12:54 17
вот пример базы с печатью.
кажется нашол причину по которой не работает.

проблема в том что обект документа освобождается после выполнения кода кнопки "печать"

как протестить:
если запустить печать в обычном режиме получаю пустое окно ворда.

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

может ктото подскажет как побороть єтот глюк?

PS Если всё заработает обязуюсь на форуме выложить качественный пример выгрузки в ворд (преимуществом которого есть централизованое хранение всех документов-шаблонов в одной базе и отсутсвие необходимости работы с шаблонами на файловом уровне(предварительное сохранение на винте или копирование с сервера))
0
26.03.2008, 14:55 18
Тут два варианта. Первый (менее возможный, скорее всего я Вас не понял) - у Вас WordObject.Visible = True выполняется до заполнения документа. Но это вряд ли. и второй вариант: вам вашу переменную под ворд надо описать в глобальных переменных, а не на кнопке, так как после завершения выполняемых действий по нажатию кнопки все переменные обнуляются. Попробуйте переменную сделать глобальной.
0 / 0 / 0
Регистрация: 01.04.2007
Сообщений: 304
26.03.2008, 15:17 19
в примере переменные глобальные,
находятся в секции globals:delaration формы. обявлены так
Dim object As Variant
Dim worddoc As Variant
Dim word As Variant

как более глобально их обявить я незнаю :(
0
26.03.2008, 16:11 20
дальше уже некуда...
26.03.2008, 16:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2008, 16:11
Помогаю со студенческими работами здесь

Обновления Лотуса
Вот возник такой вопрос. У нас стоит 6.5, которая не обновлялась вообще. За это время появилась...

Печать из лотуса
Столкнулся с такой штукой, некоторый документ помещается на страницу и нормально печатается если...

Импорт из лотуса
В общем есть закрытый програмный продукт, в котором реализована опция импорта через ODBC....

Странности лотуса...
Вот такой код Public docReq As NotesDocument ..... Set agent =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru