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

Вниз

Взаимодействие ворд+делфи   Найти похожие ветки 

 
Oleg_teacher   (2011-08-17 10:00) [0]

есть программа взаимодейсвия

в процедуре исполняем код:

if CreateWord and AddDoc then
begin
VisibleWord(True);
....
end
else ShowMessage("Невозможно создать документ")


Сами функции:
Function CreateWord:boolean;
begin
CreateWord:=true;
try
MSWord:=CreateOleObject("Word.Application");
except
CreateWord:=false;
end;
End;
Function VisibleWord (visible:boolean):boolean;
begin
VisibleWord:=true;
try
MSWord.visible:= visible;
except
VisibleWord:=false;
end;
End;
Function AddDoc:boolean;
Var Doc_:variant;
begin
AddDoc:=true;
try
Doc_:=MSWord.Documents;
Doc_.Add;
except
try
MSWord.close(0);
except
end;
AddDoc:=false;
end;
End;


На ОС. win7, Офис: 2007 в некоторых комппах появляется ошибка:
срабатывает ошибка и появляется  окно "Невозможно создать документ". Причина мне кажется в  MSWord:=CreateOleObject("Word.Application");
Что можете сказать по етому поводу? Может ли быть как то связано с политикой безопасности винды, или какие то другие настройки в Офисе? (в хп и 2003 работает безотказно).


 
oldman ©   (2011-08-17 10:13) [1]


> if CreateWord and AddDoc then
> begin
> VisibleWord(True);
> ....
> end
> else ShowMessage("Невозможно создать документ")


замени на

if CreateWord then
 if AddDoc then begin
   ... \\ твои действия при успехе
   end
 else ShowMessage("Невозможно ADDDOC")
else ShowMessage("Невозможно CREATEWORD")

хоть функцию вычислишь

ЗЫ: в AddDoc ты с try except не перемудрил?


 
Oleg_teacher   (2011-08-17 10:18) [2]


> else ShowMessage("Невозможно CREATEWORD")

тут.

> ЗЫ: в AddDoc ты с try except не перемудрил?

Ворд создан и добавлен док.... значит все ок. Если нет, тогда закрываю сам ворд. Вроде нет. Если что поправите. Может и не надо ето.


 
oldman ©   (2011-08-17 10:24) [3]


> Function CreateWord:boolean;
> begin
> CreateWord:=true;
> try
> MSWord:=CreateOleObject("Word.Application");
> except
> CreateWord:=false;
> end;


Ну так значит дело не в MSWord:=CreateOleObject("Word.Application");,
а в CreateWord:=true;
:)


> try
> Doc_:=MSWord.Documents;
> Doc_.Add;
> except
> try
> MSWord.close(0);
> except
> end;
> AddDoc:=false;
> end;


а нельзя

try
Doc_:=MSWord.Documents;
Doc_.Add;
except
MSWord.close(0);
AddDoc:=false;
end;

???


 
Oleg_teacher   (2011-08-17 10:29) [4]


> MSWord.close(0);


можно!!! но вдруг не закроется ;) и так вон ошибки вылазят :))


 
oldman ©   (2011-08-17 10:55) [5]

Я фигню советовал!

Башка сегодня не варит. Забыл, как работает try except


 
OW ©   (2011-08-18 13:52) [6]

if Pointer(IDispatch(MSWord)) <> nil then // аналогично можно документы проверить, не надо ли их Close()
 begin
   try
     MSWord.Quit;
   finally
     MSWord := UnAssigned;
   end;
 end;


 
OW ©   (2011-08-18 14:23) [7]

procedure CreateWordA(var WA: Variant);
begin
 WA := CreateOleObject("Word.Application");
 WA.DisplayAlerts := False;
 WA.Options.CheckSpellingAsYouType := False;
 WA.Options.CheckGrammarAsYouType := False;
 WA.Options.CheckGrammarWithSpelling := False;
 WA.Options.InlineConversion := False;
 WA.Options.AutoFormatApplyHeadings := False;
 WA.Options.AutoFormatApplyBulletedLists := False;
 WA.Options.AutoFormatApplyOtherParas := False;
 WA.Options.AutoFormatPreserveStyles := False;
 WA.Options.AutoFormatAsYouTypeApplyHeadings := False;
 WA.Options.AutoFormatAsYouTypeApplyTables := False;
 WA.Options.AutoFormatPlainTextWordMail := False;
// еще можно много чего задисаблить, быстрее будет работать. Читать WordXP(2000).pas файл, что именно
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.01 c
2-1312296516
Foma
2011-08-02 18:48
2011.12.04
TIdMultiPartFormDataStream и русский текст


2-1313842570
Gu
2011-08-20 16:16
2011.12.04
двумерный массив


2-1313774122
Sega625
2011-08-19 21:15
2011.12.04
record в array of byte


15-1312895553
Медвежонок Пятачок
2011-08-09 17:12
2011.12.04
Внимание здешним телепатам. Есть работа


2-1313563381
fzt
2011-08-17 10:43
2011.12.04
как обработать исключение в чужой функции?