Я создал документ Word с помощью автоматизации (Пуск Word, Открыть шаблон, Сохранение его в .doc, Закрыть документ, Выйти из Word).После этого я хочу открыть этот файл .doc в TOleContainer: fOleContainer.CreateObjectFromFile(lTempFileName, False);
.
Но наш клиент, который использует Word 2010 (несколько машин, Windows 7 / Windows XP), получает сообщение об ошибке в этой строке: Запрошенный объект не существует (0x80010114).
Что вызывает эту ошибку и как я могу ее решить?
Код:
procedure CreateNewWordDocument(const aFile, aTemplate: string);
var
lApp: WordApplication;
lDocuments: Documents;
lDoc: WordDocument;
lFileName: OleVariant;
lTemplate: OleVariant;
begin
lApp := CoWordApplication.Create;
lDocuments := lApp.Documents;
if aTemplate = '' then
lDoc := lDocuments.AddOld(EmptyParam, olFalse)
else
begin
lFileName := aTemplate;
lDoc := lDocuments.AddOld(lFileName, olFalse);
end;
lDocuments := nil;
lFileName := aFile;
lTemplate := lDoc.Get_AttachedTemplate;
lTemplate.Saved := True;
lTemplate := lApp.NormalTemplate;
lTemplate.Saved := True;
lTemplate := Null;
lDoc.SaveAs2000(lFileName, olwdFormatDocument, EmptyParam, EmptyParam, olFalse,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
lDoc.Close(olwdDoNotSaveChanges, EmptyParam, EmptyParam);
lDoc := nil;
lApp.Quit(olwdDoNotSaveChanges, EmptyParam, EmptyParam);
lApp := nil;
end;
...
CreateNewWordDocument('c:\windows\temp\~tmp2343.tmp.doc', 'c:\mytemplate.dot');
fOleContainer.CreateObjectFromFile(lTempFileName);