02.11.2007, 12:05 | #1 |
Участник
|
как юзать чужой wordDocument
привет всем, подскажите пожалуйста, скажем есть чужой метод Create_Report(EmplId)
X++: void Create_Report(EmplId _emplid)
wordDocument.tableAddRow();
wordDocument.tableInsertValue(i,1,VirtualNetworkEducation.description);
wordDocument.tableInsertValue(i,2,VirtualNetworkEducation.EducationDiploma); X++: Reports.Create_Report(EmplId); |
|
02.11.2007, 13:09 | #2 |
Участник
|
Daido, предполагаю, что класс Reports, что бы это не было, предоставляет интерфейс для вывода файлов в Ворд - в том числе он сам инициализирует нужные классы.
Поэтому wordDocument там видимо инициализируется где-то при инициализации класса. |
|
02.11.2007, 13:26 | #3 |
Участник
|
не совсем вас понел kashperuk
т.е я открываю сам шаблон
X++: wordDocument = new ComWordDocument_RU(); wordDocument.newFile(templateFile, false); X++: Reports.Create_Report(EmplId); X++: wordDocument.documentSaveAs("C:\\My_Report.doc"); wordDocument.quitApplication(true); Последний раз редактировалось Daido; 02.11.2007 в 13:43. |
|
02.11.2007, 13:35 | #4 |
Участник
|
X++: COM doc; COM app; wordDocument.documentSaveAs("C:\\Report_T2.doc"); doc =wordDocument.getComDocument(); app = doc.Application(); doc.close(false); app.quit(false); Цитата:
Данный файл открыт токлько для чтения
(С:\Report_T2.doc) Последний раз редактировалось Daido; 02.11.2007 в 14:44. |
|
02.11.2007, 15:14 | #5 |
Участник
|
и так пробовал
X++: wordDocument.documentSaveAs("C:\\Report_T2.doc"); wordDocument.quitApplication(true); wordDocument.finalize(); Цитата:
Данный файл открыт токлько для чтения
(С:\Report_T2.doc) |
|
02.11.2007, 16:51 | #6 |
MCTS
|
Все вроде с большего нормально. Должен закрываться и открываться корректно.
А как у вас отработает такой вот джоб, если его запустить несколько раз? X++: static void Job98(Args _args) { COM COMApplication, comDocuments, comDocument; ; COMApplication = new COM("Word.Application"); comDocuments = COMApplication.Documents(); COMDocument = comDocuments.Add("c:\\1.doc"); COMDocument.saveAs("c:\\1.doc"); COMDocument.saved(true); COMDocument.finalize(); COMApplication.Quit(); }
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
03.11.2007, 07:45 | #7 |
Участник
|
инфолог пишет
Цитата:
Сообщение (10:45:03)
Метод "Add" в COM-объекте класса "Documents" возвратил код ошибки 0x800A141F (<неизвестно>), который означает: Не удалось прочитать документ. Возможно, он поврежден. Попробуйте выполнить следующие действия: * Откройте файл с помощью команды ''Открыть и восстановить''. * Откройте файл с помощью конвертера резервных копий. Цитата:
del *.doc
Последний раз редактировалось Daido; 03.11.2007 в 08:04. |
|
03.11.2007, 08:21 | #8 |
Участник
|
может мне надо закрыть документ с помощью метода closeDocument, подскажите параметры метода closeDocument
пишу Цитата:
wordDocument.closeDocument(true,1);
Цитата:
документ должен быть переопределен
|
|
05.11.2007, 16:29 | #9 |
MCTS
|
Цитата:
инфолог пишет...
Батник запустить: Цитата:
WinApi::shellExecute("c:\\1.bat");
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
06.11.2007, 18:11 | #10 |
Moderator
|
Цитата:
Сообщение от Daido
т.е я открываю сам шаблон
X++: wordDocument = new ComWordDocument_RU(); wordDocument.newFile(templateFile, false); X++: Reports.Create_Report(EmplId); X++: wordDocument.documentSaveAs("C:\\My_Report.doc"); wordDocument.quitApplication(true); Мне кажется, вам нужно сначала запускать чужой отчет, а потом подключаться в эту "чужую" Word-сессию примерно таким оператором: X++: wordApp = COM::getObject('Word.Application'); Некоторое неудобство такого подхода заключается в том, что если запущено несколько сессий Ворд (например, вы еще сами вручную редактируете какой-то свой документ), то нельзя предсказать в какую сессию подключится COM::getObject. Поэтому перед началом такого процесса все другие Ворды необходимо закрыть, и тогда COM::getObject предсказуемо подключится в единственную сессию. |
|
07.11.2007, 14:19 | #11 |
Участник
|
всем спасибо, вопрос снять, разобрался )))
|
|