Программа Delphi больше не запускает Excel

#excel #delphi #ole

#excel #delphi #ole

Вопрос:

Delphi Rio, 64-разрядная версия Win10, Excel 2016-64 бит. У меня есть утилита, которую я написал на Delphi некоторое время назад. Она открывает HTML-файл, запускает Excel, анализирует HTML-файл и загружает различные части в Excel. Она отлично работает… Внезапно я недавно запускаю ее, и теперь я получаю ошибки. В частности, я получаю ошибку EOleSysError — сбой выполнения сервера, ProgID: Excel.Приложение. Это происходит при попытке запустить Excel. Я не перекомпилировал свою программу, она просто перестала работать и теперь выдает эту ошибку. Я проверил, что Excel можно запускать / использовать / останавливать вручную без проблем. Я проверил, что в фоновом режиме не работают исполняемые файлы Excel. Я попробовал полную перекомпиляцию в своем приложении, никаких изменений… Единственное, что изменилось в системе, это то, что Windows сделала довольно большое обновление, и я установил несколько дополнительных программ (Logitech camera и т. Д., Которые Не взаимодействуют с Excel).). Я в недоумении. Когда я просматриваю свой код, он завершается ошибкой в строке CreateOleObject. Вот процедура..

 // This routine Starts excel
function glib_StartExcel: Integer;
var
  myAPP: OleVariant;
  Save_Cursor: TCursor;

begin
// Assume that it is already running
result := glib_FAILURE;

  if not Assigned(oExcel) then
  begin
    Save_Cursor := Screen.Cursor;
    Screen.Cursor := crHourglass;

    myAPP := CreateOleObject('Excel.Application');
    oExcel := IDispatch(myAPP) as ExcelApplication;

    Screen.Cursor := Save_Cursor;
    result := glib_SUCCESS;
  end;
end;
  

oExcel — это глобальная переменная типа ExcelApplication . Среди прочего, мое предложение USES содержит

 System.UITypes, ComObj,  Office_TLB, Excel_TLB, DB,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls,...
  

Я пошел и проверил совершенно другую программу, которая снова запускается и работает с Excel. Я получаю аналогичную ошибку: ошибка EOleSysError: сбой выполнения сервера, ClassID: {набор чисел… похоже, это GUID}. Эта программа также не была перекомпилирована. Есть мысли?
Есть идеи, что происходит?

** Дополнительная информация. Я получаю сообщения об ошибках в журнале событий Windows, когда пытаюсь запустить свои программы. Сообщения:

 Faulting application name: EXCEL.EXE, version: 16.0.11629.20246, time stamp: 0x5cfadf82
Faulting module name: KERNELBASE.dll, version: 10.0.19041.572, time stamp: 0x1183946c
Exception code: 0xc0020001
Fault offset: 0x0000000000023e49
Faulting process id: 0x208
Faulting application start time: 0x01d6b84ea1de50b0
Faulting application path: C:Program FilesMicrosoft OfficeRootOffice16EXCEL.EXE
Faulting module path: C:WINDOWSSystem32KERNELBASE.dll
Report Id: bed97990-8ead-4593-a058-e834105f0654
Faulting package full name: 
Faulting package-relative application ID: 
  

** EDIT2 — я нашел макрос MS Word, который использует CreateObject… чтобы открыть Excel. Это также не будет работать на моем компьютере. Это наводит меня на мысль, что кто-то перепутал конфигурацию моего компьютера. Я зашел в центр обновления Windows и убедился, что у меня применены все обновления.

** EDIT3 — я выполнил как быстрое восстановление Office, так и онлайн / полное восстановление (которое загружается и появляется для переустановки Office. Это не меняет проблему.

Комментарии:

1. Обновление нарушило ваши права пользователя? или изменить права на каталог?

2. Попробуйте переустановить Excel.

3. @@Solar Mike — Не то, что я могу сказать. Я могу запустить все нормально. Просто мое приложение не может запустить Excel.

4. @@Oliver — Хотя это и вариант, это серьезное осложнение из-за плагинов Excel. Я бы сделал это только в крайнем случае… Я молюсь, чтобы до этого не дошло.

5. Выполните поиск в реестре, если вы найдете ключ, содержащий «Excel. Приложение » как данные. В моей системе он находится по адресу: HKEY_LOCAL_MACHINE SOFTWARE Wow6432NodeClasses CLSID {00024500-0000-0000-C000-000000000046}VersionIndependentProgID Это ключ, который CreateOleObject(‘Excel. Приложение ‘) поиск.

Ответ №1:

Спасибо всем за ваши предложения… к сожалению, ничего не сработало, включая полное онлайн-восстановление. В конце концов мне пришлось полностью удалить, а затем переустановить. Это устранило мою проблему.

Комментарии:

1. Возникла та же проблема. Ничего из того, что я пробовал, не помогло. Только удаление, перезапуск и переустановка решили проблему.

Ответ №2:

Возможное решение, была аналогичная проблема, только с LibreOffice. Службы вспомогательных компонентов-> Компьютеры-> Мой компьютер-> Конфигурация DCOM-> Диспетчер служб LibreOffice (версия 1.0) -> Идентификация-> Изменение с начального пользователя на текущего пользователя