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
|
|
25.03.2008, 10:36 | |
Ответы с готовыми решениями:
27
Ошибка лотуса Smtp Лотуса Ошибки Лотуса Скорость Лотуса |
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 |
![]() перед этим надо ыйти из ворда через вордовский 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 |
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
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 |
![]()
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 |
![]() С самим шаблоном ничего при этом не произойдет...
0
|
|
|
26.03.2008, 08:58 | 16 |
![]() Вот что то вроде того: Код
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 | |
26.03.2008, 16:11 | |
Помогаю со студенческими работами здесь
20
Обновления Лотуса Печать из лотуса Импорт из лотуса Странности лотуса... Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |