Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];
Внизошибка при вызове Word а Найти похожие ветки
← →
Picco (2003-04-15 11:09) [0]Поможите чем можите
Проблемма в следующем:
вызываю Word
MsWord:=CreateOleObject("Word.Application");
на некоторых машинах все нормально, на некоторых ошибка
"Вызов был отклонен", при этом в списке запущенных задач обнаруживаю три экземпляра запущенных Word
При кратком изучении ситуации в силу поверхностных знаний ActiveX технологий нахожу на в реестре машинах с ошибкой три
зарегистрированных объекта Word:
Word.Application
Word.Application.8
Word.Application.10
Все попытки с инициализацией каждого по имени CreateOleObject("Word.Application.8..10");
из вышеперечисленных
ситуация та же "Вызов был отклонен" и запуск трёх Word"ов сразу.
Может кто знает как по другому его вызывать или обрабатывать сию ситуацию.
Спасибо за внимание
← →
Shirson (2003-04-15 12:23) [1]Нет, проблема не в трёх зарегистрированных объектах, у меня их тоже три (только не 10, а 9) и всё нормально работает.
Может в коде у тебя что не так?
← →
Rol (2003-04-15 12:38) [2]Код в студию!
← →
Picco (2003-04-15 13:09) [3]На входе программы текстовый файл с подстановочными полями
типа <ДИРЕКТОР>="Иванов И.И" и второй параметр шаблон Word на основе документа которого она будет искать и заменять поля.
procedure TForm1.FormCreate(Sender: TObject);
var
F: TextFile;
i,j: integer;
S,S1,s2:string;
Template,FileInput:string;
MsWord,myRange:OleVariant;
begin
try
MsWord:=CreateOleObject("Word.Application");
FileInput:=LowerCase(ParamStr(1));
Template:=LowerCase(ParamStr(2));
MsWord.Documents.Add(Template,EmptyParam);
i:=0;
AssignFile(F,FileInput);
Reset(F);
if not RxMemoryData1.Active then RxMemoryData1.Active:=true;
while not eof(f) do
begin
ReadLn(F,S);
S:=OemToAnsiStr(S);
S1:=ExtractWord(1,S,["="]);
S2:=ExtractWord(2,S,["="]);
RxMemoryData1.Append;
RxMemoryData1.FieldByName("names").AsString:=S1;
RxMemoryData1.FieldByName("values").AsString:=S2;
RxMemoryData1.Post;
end;
myRange:=MsWord.ActiveDocument.Content;
with RxMemoryData1 do
begin
First;
While not eof do
begin
myRange.Find.Execute(RxMemoryData1.FieldByName ("names").AsString, EmptyParam, EmptyParam, EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,Trim(RxMemoryData1.FieldByName("values").AsString),wdReplaceAll);
Next;
end;
end;
CloseFile(F);
MsWord.Visible:=True;
Application.Terminate;
except
begin
ShowMessage("Неудачная попытка печати");
Application.Terminate;
end;
end;
end;
← →
V-A-V (2003-04-15 15:03) [4]Да кстати у меня такая же бяка на некоторых машинах случается, и тоже никак поймать не могу отчего...
Хотелось бы послушать мнения народа по этому поводу.
← →
Shirson (2003-04-15 15:33) [5]И на какой строке вываливается ошибка?
P.S. Я у себя ворд объявляю не как OleVariant, а как просто Variant.
← →
Picco (2003-04-15 16:20) [6]Пробовал я и с variant то же самое
а на строке CreateOleObject("Word.Application") конечно вываливается,странно но с Excel подобных бяк не встречал.
← →
Ozone (2003-04-16 09:39) [7]Дык, Word после работы закрывать надо - MsWord.Quit;
< MsWord.Documents.Add(Template,EmptyParam); >
По-моему, лучше использовать для этого variant"скую переменную.
Что-то типа WordDocument:=MsWord.Documents.Add;
← →
Shirson (2003-04-16 10:29) [8]>Ozone
Если у Picco при первом обращении вываливается ошибка, то о каком закрытии ворда идёт речь?
Кстати ворд закрывается командойMsWord.Application.Quit(false,0)
И команда
MsWord.Documents.Add
тоже воплне прекрасно работает.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c