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

Вниз

Теоретически всё правильно, а вот на практике ...   Найти похожие ветки 

 
1008 ©   (2004-10-04 14:13) [0]

Вставляю данные в Word документ следующим образом:

WA:=TWordApplication.Create(ZvitForm);
WD:=TWordDocument.Create(ZvitForm);
fname:=ExtractFilePath(Application.ExeName)+"shablon.dot";
WA.Documents.Open(fname,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam,
                 EmptyParam);
WD.ConnectTo(WA.ActiveDocument);
replace:=1;
for i:=1 to 10 do begin
oldStr:="@"+inttostr(i);
case i of
 1: newStr:=usurname;
 2: newStr:=uname;
 3: newStr:=upatronimic;
 ...
end;
WD.Range.Find.Execute(oldStr,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      newStr,
                      replace,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam,
                      EmptyParam);

end;//for i:=1 to 11 do begin
WD.Close;
WA.Quit;

WA.Free;
WD.Free;


В выделенном фрагменте возникает ошибка, но на двух из четырёх машин, на которых я проверял работу программы. Формально всё делал по иснтрукции и всё делал вроде как правильно, но реально возникает ошибка OLE Error C0000005.
Работоспособность на WinXP   + Office2003    - нормально
                    Win98SE + Office2000Pro - нормально
ещё на двух машинах с Win98SE + Office2000 - вылетает указанная ошибка.
Кто-нибудь знает с чем это может быть связано?


 
KSergey ©   (2004-10-04 14:19) [1]

Вероятнее всего - различия в версиях офиса. Вообще в этом смысле надежнее использовать позднее связывание.


 
1008 ©   (2004-10-04 14:44) [2]

KSergey ©  (04.10.04 14:19) [1]

Есть, например, моя машина с Win 4.10.2222 A и Word 9.0.2812
и соседняя с Win 4.10.2222 A и Word 9.0.2812 (из отличий от моей системы нашёл то, что папка, которая у меня именуется: "Мои документы" на соседней машине именуется "My Documents").

А что такое позднее связывание и как его осуществить?


 
clickmaker ©   (2004-10-04 14:45) [3]


> [1] KSergey ©   (04.10.04 14:19)
> Вероятнее всего - различия в версиях офиса. Вообще в этом
> смысле надежнее использовать позднее связывание.

Чем надежнее? Если различия в количестве или типах параметров, то оно не спасет. Тогда уж надо версию проверять


 
1008 ©   (2004-10-04 14:49) [4]

Кстати такие вещи как определение версии:

wordver:=WA.Version;
tmps:="";
for i:=1 to length(wordver) do if wordver[i]="." then break else tmps:=tmps+wordver[i];
if strtoint(tmps)<9 then begin
messagebox(ZvitForm.Handle,"Нужна версия не ниже 2000","Error!!!",mb_ok);
WA.Free;
WD.Free;
close;
end;

и некоторые проверки я опустил задавая вопрос.


 
YurikGL ©   (2004-10-04 16:21) [5]

app:Variant;

try
 app := CreateOleObject("Word.Application");
 App.Visible := True;

работаем с вордом

finally
 App:=Unassigned;
end;


 
1008 ©   (2004-10-04 16:34) [6]

YurikGL ©  (04.10.04 16:21) [5]

Спасибо. Попробую.



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
1-1097549094
VAV
2004-10-12 06:44
2004.10.24
Контейнер для текстов


3-1096279576
barkot
2004-09-27 14:06
2004.10.24
fkCalculated ???


3-1096004710
janb
2004-09-24 09:45
2004.10.24
Помогите с расчетами!!!


14-1096952439
Dimman
2004-10-05 09:00
2004.10.24
Вопрос про цифровое видео


14-1097072739
infom
2004-10-06 18:25
2004.10.24
Где взять функция, которая парсит запрос ?