Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.24;
Скачать: CL | DM;

Вниз

Ерунда при работе с Word.Application   Найти похожие ветки 

 
silversmith   (2006-09-11 13:53) [0]

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

procedure writetodoc(fn:AnsiString);
var
w:olevariant;
i:integer;
begin
w:=CreateOleObject("Word.Application");
w.WordBasic.FileOpen(fn);
for i:=1 to n do begin
 // здесь я делаю с файлом что мне нужно.
 //Вставляю текст по местоположению закладок в файле.
end;
w.WordBasic.FileSave;
w.WordBasic.FileQuit;
end;
При одиночном вызове данной процедуры все нормально.
А вот когда я в основной программе пишу примерно следующее:

for i:=1 to n do writetodoc(a[i]);
при второй итерации цикла возникает EOleSysError ошибка что-то типа "Выделенный объект отключен". Исключение возникает в строчке

w.WordBasic.FileOpen(fn);
Ну да ладно. Мы не ишем легких путей.

Попытался сделать так:

writetodoc(a[1]);
writetodoc(a[2]);
....
writetodoc(a[n]);
Тупо подряд вызываю процедуры. Вы будете смеятся, но так работает. Умом понимаю, что такого быть не может. Чувствую себя чайником лопоухим.
Как побороть?

Delphi7, MSOffice 2000


 
umbra ©   (2006-09-11 16:46) [1]

Свойство WordBasic предназначено для совместимости с Word 6.0 и Word for Windows 95. Забудьте о нем.

Если Вы предполагаете обработку нескольких документов, то Word.Application лучше создать вне цикла

var
WordApp: Variant;
{...............................................}
procedure writetodoc(fn:AnsiString, WordApp: variant);
var
doc:olevariant;
i:integer;
begin
WordApp.Documents.Open(Filename:=fn);
for i:=1 to n do begin
// здесь я делаю с файлом что мне нужно.
//Вставляю текст по местоположению закладок в файле.
end;
doc.Save;
doc.close;
doc := Unassigned;
end;
{.........................................}
WordApp := CreateOleObject("Word.Application");
If not VarIsEmpty(WordApp) then
  for i:=1 to n do writetodoc(a[i], WordApp);
WordApp.Quit;
WordApp := Unassigned;



 
umbra ©   (2006-09-11 16:47) [2]

Удалено модератором
Примечание: Дубль


 
silversmith   (2006-09-12 12:52) [3]

Спасибо за совет. Помогло.



Страницы: 1 вся ветка

Текущий архив: 2009.05.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.021 c
4-1210156637
A.L.E.X.A.N.D.E.R.
2008-05-07 14:37
2009.05.24
Создание процесса от имени системы .


3-1221562940
Tonich
2008-09-16 15:02
2009.05.24
Параметры транзакции


2-1239098915
AlexDan
2009-04-07 14:08
2009.05.24
ms sql и delphi


3-1221206642
KirillRepin
2008-09-12 12:04
2009.05.24
добавление рисунка в БД из файла


15-1237765370
KilkennyCat
2009-03-23 02:42
2009.05.24
Прикольно. Надо срочно копать бункера.