powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Word: исключение с сообщением "Вызов был отклонён".
13 сообщений из 13, страница 1 из 1
Word: исключение с сообщением "Вызов был отклонён".
    #39993196
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. В программе есть функция создания docx-документов на основе шаблонов. На некоторых компьютерах она не работает.

Файл создаётся следующим образом:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
var
  MWord: OleVariant;
  Document: Variant;

begin
try
  MWord := GetActiveOleObject('Word.Application');
except
  try
    MWord := CreateOleObject('Word.Application');
  except
    //Пишем в лог, потом его можно добавить в StackTrace
    MessWord := MessWord + 'ошибка запуска приложения Word' + #13
  end;
end;

try
  Document := MWord.Documents.Add(sFilePath, false); //sFilePath - путь к шаблону.
except
  MessWord := MessWord + #13 +
                      'ошибка создания документа Word на основе шаблона, (MWord.Documents.Add)' + #13; 
end;

try
  if ShowDateNumber then
    Document.Variables.Item('Date_Doc').Value := DateToStr(DocDate)
  else
    Document.Variables.Item('Date_Doc').Value := ' ';
except
  MessWord := MessWord + 'Внесение даты документа...   ' + #13;
end;



Сама функция очень большая, поэтому привожу фрагмент.

Если Word уже запущен, то документ создаётся, никаких проблем нет. Если Word не запущен, то отображается шаблон со значениями по умолчанию, а в StackTrace сообщение об ошибке "Вызов был отклонен". Для создания файла использовал метод Open вместо Add, думал может в нём какие-то глюки, но нет ошибка та же самая.

Перерыл кучу форумов, статей. На сайте Microsoft пишут только про Visual Studio и Office 2007. У пользователей стоит Office не ниже 2010 и это же сообщение об ошибке. Повторюсь, что ошибка плавающая, не на всех компьютерах её удаётся повторить.

Для Excel-я есть свойство Ready, т.е. можно проверить готов он работать или нет, а у Word-а почему-то такого свойства нет. Делать несколько попыток создать файл не вариант, так как будут создаваться несколько пустых шаблонов, которые потом надо будет закрывать и к чему устраивать такой бардак на компьютерах пользователей.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39993248
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerr,

Тут, пораскинув хрустальными шарами, есть предположение, что зависит: русская али английская. При обращении к функционалу ворда программно могут быть проблемы. Так же могут возникнуть проблемы при попытке заполнить поля, имеющие тип более новый, чем предусмотрен в текущей версии ворд.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39993255
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerr,
и, да: добавь

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
except
on e:exception do begin 
    MessWord := MessWord + #13 +
                      'ошибка создания документа Word на основе шаблона, (MWord.Documents.Add)' + #13+
                    e.Message;
                     end; 
end;
 
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39993349
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gerasimenko, спасибо за ответы. Ещё раз почитал документацию. Написал MWord.DisplayAlerts = -1 . Константа wdAlertsAll равна -1. Думал увижу, что там такого сообщает word, а он без единой ошибки создал мне файл. Как это связано пока понять невозможно. Ладно бы показал сообщение об ошибке с более детальной информацией. Возможно тут нет прямой зависимости, попробую на других компьютерах.

В приведённом фрагменте кода не написал, но до этого было MWord.DisplayAlerts = 0 . Константа wdAlertsNone = 0.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39993407
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sh2kerr,
Общее замечание в части кода - при вызове методов Automation-объекта не ленись явно указывать имена параметров, больше шансов что при смене версии офиса не вылезут глюки
Код: pascal
1.
MWord.Documents.Add(filename := sFilePath, чтототам := false)



В части ошибки - копай в сторону антивируса, типичная для его работы ситуация.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39993996
AnTe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Много (лишнего) текста в приведённом исходном коде (целая плетёнка из if-ов, зачем она здесь?)

И нет главной информации: какая строка вызывает ошибку

Далее, выясняется, что в приведённом коде отсутствует строка с обращением к сервису (MWord.DisplayAlerts = 0)


Автор, нельзя ли покорректнее объяснить суть возникаемой проблемы?
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39994314
Дмитрий НВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня такая ошибка возникала, если офис был не активирован, и при его запуске выскакивала табличка с предложением об активации.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39994422
AnTe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Судя по сообщению, можно предположить, что microsoft word выводит (возможно, какое-то "скрытое") сообщение, а пользователь не отвечает на него.

до сих пор непонятно, какая строка вызывает ошибку

- старт OLE-сервера?
- добавление документа в запущенный экземпляр сервера?
- добавление полей в открытый (или созданный) документ?

в данной теме все занимаются гаданием на кофейной гуще - кто про что вспомнит. Кто-то про добавление полей, кто-то рекомендует метод добавления документа обернуть, кто-то общие предположения выводит



гугл в первых строках выдаёт результат на нашем же форуме

https://www.sql.ru/forum/1319135/ole-ms-excel-vyzov-byl-otklonen-vo-vremya-dialoga

Кстати, там есть и про DisplayAlerts. приводится даже несколько вариантов решений, но прежде чем их разбирать - хотелось бы понять, в каком месте возникает ошибка?
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39994675
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AnTe, исключение возникает при создании документа, т.е. вызова методов Open либо Add, результат одинаковый.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39994692
AnTe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. правильно ли я понимаю, что подошло бы такое описание проблемы:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
var
  MWord: OleVariant;
  Document: Variant;
begin
  MWord := GetActiveOleObject('Word.Application'); {при запущенном word-е}
  Document := MWord.Documents.Add(PathOfTemplate, false);  {на этой строке программа валится с ошибкой "вызов был отклонён", замена Add на Open не помогла}
end;





2. Если пункт 1 выполняется - варьировали ли параметры метода Add?
судя по документации, https://docs.microsoft.com/ru-ru/office/vba/api/word.documents.add
при вызове метода допустимы четыре параметра
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39994813
Любезный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то сталкивался с таким сообщением, когда увидел на компе клиента слетевшую активацию Office 2013, правда там был не Ворд, а Ёксель. При открытии Ёкселя вместе с этим сообщением появлялось окно с ошибкой активации продукта.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39995085
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашёл такое решение. Проверил на компьютере пользователя, у которого эта ошибка стабильно повторялась.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var
MWord: OleVariant;
Document: Variant;

begin
  MWord := CreateOleObject('Word.Application');

  MWord.DisplayAlerts := 0;
  MWord.Visible := false;

  //sFilePath - путь к шаблону
  Document := MWord.Documents.Add(sFilePath, false);
end;



Думал проблема в свойстве DisplayAlerts, присваивал ему значение -1 (показывать все предупреждения) оказалось, что это не так. DisplayAlerts никак не влияет на создание файла. 0 - не показывать предупреждения.

В документации не написано, видимо по умолчанию свойство Visible = false. Такой вывод сделал закоментировав строку:
MWord.Visible := false;
Если присвоить true программа падает с ошибкой "Вызов был отклонён".

Согласно документации метод Add принимает 4 параметра. Четвёртый как раз Visible и по умолчанию у него значение true. Проверял при установленном свойстве Visible = false файл создаётся методами Add и Open.

Проблем с активацией нету, Office 2010 не пиратка. Перед созданием файла Word не был запущен. Настройки касперского не трогал и он был запущен. Программа падала при попытке создать файл.
...
Рейтинг: 0 / 0
Word: исключение с сообщением "Вызов был отклонён".
    #39995097
Sh2kerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь. В предыдущем посте написал, "программа падала при попытке создания файла" . Это уточнение, что ошибка "Вызов был отклонен" происходила не при создании объекта Word.Application и не при заполнении полей, а при создании файла, т.е. при вызове методов Add и Open.

А то кто-нибудь подумает, что предложенный вариант не работает.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Word: исключение с сообщением "Вызов был отклонён".
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]