Форум: "Начинающим";
Текущий архив: 2011.12.04;
Скачать: [xml.tar.bz2];
Вниз
Взаимодействие ворд+делфи Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c