You are not logged in. Please login or register.
Active topics Unanswered topics
Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Pages 1
You must login or register to post a reply
1 2019-06-18 13:14:50 (edited by mikhail_a 2019-06-19 16:40:20)
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Есть кнопка со стандартным действием «Экспорт в Excel».
В настройках кнопки указано свойство «Auto».
Для работы с таблицами установлен LibreOffice Calc. Excel не установлен.
При нажатии кнопки «Экспорт в Excel» выпадает ошибка: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application».
Если же в свойствах кнопки указать вместо auto вывод в LibreOffice Calc, то вывод работает нормально.
Как победить ошибку при установке вывода в «auto»?
У меня сетевое приложение и у разных пользователей стоят разные программы для работы с таблицами.
Т.е. мне нужно действительно «auto» определение в какое приложение выводить данные.
Если нельзя или долго устранять ошибку, то может быть как-то можно в самом скрипте проверять, какое приложение используется на данном ПК для работы с таблицами и посылать данные в него?
2 Reply by DriveSoft 2019-06-20 09:56:34
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Проверьте пожалуйста, какая ошибка возникает, когда в настройках кнопки указан «Excel»
Данная ошибка возникает на всех компьютерах, на которых Excel не установлен? или только на одном?
Dmitry.
3 Reply by mikhail_a 2019-06-21 13:26:55
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Получается такая картина:
1. Если на ПК установлен Excel и Libre Office, то экспорт нормально срабатывает в любое приложение (если в кнопке явно указать конкретное приложение — Excel или OpenOffice(Calc) )
Однако, при указании в кнопке значения «auto», открывается Excel, а не то приложение, с которым ассоциировано расширение файла xls.
Т.е. настройка «auto» — ‘это не «auto», а «Excel».
2. Если на ПК установлен только Excel, то экспорт в него работает корректно, а при попытке послать экспорт в OpenOffice(Calc), сообщает, что эта программа не установлена.
Т.е. все ОК.
3. Если на ПК Excel не установлен, а только Libre Office, то экспорт в него делается нормально, а экспорт в «Excel» или «auto» подвешивает программу где-то на минуту, а затем появляется сообщение об ошибке: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application».
Проверить, как это работает на других ПК без установленного Excel пока не могу.
…
Очевидно, ошибка возникает в момент создания объекта Excel.Application, поскольку его на ПК нет.
…
Таким образом, во-первых, кнопка экспорта в режиме auto должна открывать то приложение, с которым ассоциировано расширение xls.
И второе — если Excel не установлен (или ошибка создания объекта), то сообщать, что Excel не установлен.
4 Reply by DriveSoft 2019-06-21 13:43:17
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Режим auto не проверяет ассоциацию расширения xls, а только лишь проверяет, если установлен Excel, открываем в нем, если нету, то проверяет, установлен ли Libre Office.
Пока под рукой нет компьютера без установленного Excel для проверки, но попробую найти, т.к. возможно ошибка связана с некоректным удалением Excel.
Если у кого то из пользователей не уставновлен Excel, просьба проверить это, будет ли таже самая ошибка.
Dmitry.
5 Reply by mikhail_a 2019-06-21 14:47:10
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
На этом ПК у меня Excel не стоял никогда.
Но, стоял WPS Office 2016.
И в него экспорт производился нормально при установке кнопки в auto.
В мое отсутствие на работе эту программу по ошибке деинсталлировали с ПК.
Возможно, сделали что-то неправильно.
Я уже поставил ее обратно, но в нее экспорт теперь уже не производится.
Т.е. возможно это проблема конкретного ПК, но надо бы добавить перехват и обработку этой ошибки.
А вообще, правильно было бы проверять ассоциацию расширения файла и запускать привязанное по умолчанию приложение
6 Reply by mikhail_a 2019-07-01 14:22:26
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
DriveSoft wrote:
Режим auto не проверяет ассоциацию расширения xls, а только лишь проверяет, если установлен Excel, открываем в нем, если нету, то проверяет, установлен ли Libre Office.
Вопрос — к какому ключу идет обращение, чтобы понять установлен ли Excel?
7 Reply by DriveSoft 2019-07-01 14:29:14
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Имеете ввиду ключ реестра?
Проверяется другим способом:
function CheckExcelInstalled(AValue: String): boolean;
var
FCLSID: TCLSID;
begin
Result := (CLSIDFromProgID(PChar(AValue), FCLSID) = S_OK);
end;
// auto
if CheckExcelInstalled ('Excel.Application') then Grid.ExportToExcel()
else if CheckExcelInstalled ('com.sun.star.ServiceManager') then Grid.ExportToLibreCalc()
else MessageBox(TForm(TdbButton(Button).Owner).Handle, PChar(Lang.Your_computer_does_not_have_Excel_or_LibreOffice), PChar(Lang.Error), MB_OK+MB_ICONINFORMATION);
в принципе вы можете реализовать режим Auto скриптами, создайте на форме две кнопки, одна для Excel, другая для LibreOffice, данные кнопки можно скрыть с формы, затем расположите еще одну кнопку, где вы сможете по своему алгоритму определять, что именно установлено у пользователя и соотвественно нажимать соотвествующую скрытую кнопку.
Dmitry.
8 Reply by mikhail_a 2019-07-01 16:49:39
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
DriveSoft wrote:
Имеете ввиду ключ реестра?
Проверяется другим способом:
function CheckExcelInstalled(AValue: String): boolean; var FCLSID: TCLSID; begin Result := (CLSIDFromProgID(PChar(AValue), FCLSID) = S_OK); end;
// auto if CheckExcelInstalled ('Excel.Application') then Grid.ExportToExcel() else if CheckExcelInstalled ('com.sun.star.ServiceManager') then Grid.ExportToLibreCalc() else MessageBox(TForm(TdbButton(Button).Owner).Handle, PChar(Lang.Your_computer_does_not_have_Excel_or_LibreOffice), PChar(Lang.Error), MB_OK+MB_ICONINFORMATION);
Этот код ищет в реестре программу с названием «Excel.Application».
Все ProgID должны располагаться в ветке реестра HKEY_LOCAL_MACHINESOFTWAREClasses
Но, в этой ветке на моем ПК нет строки «Excel.Application» (проверил вручную)
Зато есть в какой то другой ветке и без параметра CLSID
Может быть Ваш код не учитывает отсутствие этой строки в данной ветке реестра или отсутствие у него CLSID?
И поэтому возникает ошибка.
9 Reply by DriveSoft 2019-07-04 09:05:57
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Функция CLSIDFromProgID не является моей, она системная, к сожалению я не смогу изменить механизм ее работы.
Dmitry.
Posts: 9
Pages 1
You must login or register to post a reply
You are not logged in. Please login or register.
Active topics Unanswered topics
Pages 1
You must login or register to post a reply
1 2019-07-22 17:28:37
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Данная ошибка возникает при попытке импорта или экспорта таблицы в Excel.
Переустановка Office ничего не дала.
Трехнедельные танцы с бубнами по найденным в инете идеям в виде внесения изменений в реестр, изменения прав доступа к объектам и тому подобное, успехов не принесли.
Более того, оказывается сама microsoft открещивается от своего офиса в вопросах автоматизации: https://support.microsoft.com/ru-ru/hel … -of-office
Т.е. она говорит, что при использовании механизма OLE обращение к Office может сработать, а может и нет.
Прямо как у меня — на некоторых ПК все работает нормально, а на одном — возникает ошибка.
Кстати, к Ворду тоже обращение не проходит.
Для эксперимента повторил модуль экспорта на Delphi (создание файла Excel).
Запустил два раза — создание файлов прошло нормально, а третий раз — ошибка приложения-сервера.
И теперь всегда только ошибка возникает.
Вообще — фантастика! Как будто где-то пробка
…
Как рекомендует Microsoft, надо работать с Excel без OLE.
На эту тему нашел готовый модуль для Delphi: http://www.delphisources.ru/pages/faq/b … t_ole.html
Поскольку сам я не силен в Delphi, просьба проверить работу этого кода и если работает включить его в MVD.
2 Reply by mikhail_a 2019-07-23 08:31:02
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Ну да, может неверно названо.
У меня проблема в том, что независимо от того, установлен Excel на ПК или нет, детектирование наличия Excel средствами MVD или Delphi всегда дает положительный результат.
Т.е. Result := (CLSIDFromProgID(‘Excel.Application’, CLSID) = S_OK); всегда возвращает ОК.
А вот дальше механизм OLE не срабатывает.
Спотыкается на CreateOleObject(‘Excel.Application’);
Причем, это самое OLE не работает и для Ворда.
…
Но, проблема оказалась еще шире.
У меня есть кнопка, которая открывает файл, указанный в соотв. поле файла.
Т.е. есть такая команда: OpenFile(Form1.DBFile_1.Text);
Эта команда открывает файл документа программой, который ассоциирован с данным расширением файла.
Так вот оказывается, если у меня установлена ассоциация расширения .doc с, например, LibreOffice, то файл открывается нормально.
Но, если .doc ассоциирован с Вордом, то открытия файла не происходит.
Но и никакой ошибки не появляется.
При этом, сам Ворд и Excel работают нормально и как положено открывают файлы из проводника.
Вообще ничего не понимаю.
Может у кого есть идеи?
3 Reply by mikhail_a 2019-07-23 09:24:45
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Да, наверно, проблему можно решить чисткой реестра от офиса.
Но, я о другом — существующие в MVD (Delphi) средства работы с офисом через OLE не рекомендуются самим Microsoft.
И как доказательство обоснованности их опасений — проблемы на моем ПК.
Я сам разрабатываю программу для работы нескольких пользователей и имею возможность попытаться пофиксить на своем ПК проблемы реестра windows.
Но, если такие же проблемы будут у тех, кто будет пользоваться моей программой, то это станет неразрешимой проблемой.
Хотелось бы иметь в MVD такое решение экспорта-импорта в Excel, которое было бы независимо от OLE, если его Microsoft не рекомендует.
Сейчас же я не могу добиться того, чтобы MVD(Delphi) проверяло бы реальную работоспособность OLE механизма на конкретном ПК и если есть какие-то проблемы с этим, то хотя бы сообщало об этом, а не зависала бы на длительный срок с последующим выпаданием в исключение.
4 Reply by mikhail_a 2019-07-23 11:47:27
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Try не спасает.
На коде CreateOleObject Delphi зависает на две минуты (засекал), а потом выдает свое исключение.
Поймать его своей обработкой ошибки заключив этот код в Try не получается.
Да и ждать появления обработки в течение двух минут не лучший вариант.
5 Reply by DriveSoft 2019-07-24 10:04:07
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Почему просто не использовать отчеты для експорта данных в Excel или OpenOffice?
Dmitry.
6 Reply by mikhail_a 2019-07-24 11:09:10
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Отчеты не получается использовать для экспорта напрямую в Excel по той же причине — они общаются с Excel через OLE.
Попытка экспорта из отчета в Excel дает ту же ошибку.
…
Однако, если делать экспорт отчета в Open Document Spreadsheet (т.е. в файл .ods) и, при этом, ассоциировать расширение ods с Excel, то после диалога сохранения файла успешно открывается Excel и в нем корректно отражены все данные.
Т.е. проблема экспорта в Excel действительно может быть решена с помощью отчетов.
…
Подскажите, пожалуйста, как передать данные с формы из таблицы в отчет без его отображения (чтобы был выбран экспорт в Open Document Spreadsheet) и сразу открылся диалог сохранения ods файла, а потом открылся Excel?
…
И есть ли еще какой-то альтернативный способ импорта данных из xls и xlsx файлов, который бы не использовал Excel?
7 Reply by DriveSoft 2019-07-25 10:44:46
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
mikhail_a wrote:
Подскажите, пожалуйста, как передать данные с формы из таблицы в отчет без его отображения (чтобы был выбран экспорт в Open Document Spreadsheet) и сразу открылся диалог сохранения ods файла, а потом открылся Excel?
В настройках кнопки выберитк OpenOffice (ods)
procedure Form1_bReport_OnAfterClick (Sender: string);
begin
OpenFile(Form1.frxODSExport1.FileName); // в данном свойстве будет имя ods файла
end;
begin
Form1.frxODSExport1.OpenAfterExport := False;
end.
Dmitry.
8 Reply by mikhail_a 2019-07-26 15:31:29 (edited by mikhail_a 2019-07-26 15:33:51)
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Удалось решить проблему с экспортом в Excel.
Оказывается причиной проблем был китайский WPS Office.
Это самый сильный конкурент Microsoft Office.
Видимо при инсталляции он себя где-то прописывает и в результате подменяет собой Excel.
На втором ПК у нас стоит WPS2019 и при экспорте в Excel открывается именно WPS2019.
Т.е. у WPS2019 полностью совпадает с Excel способ общения по OLE.
А у меня стоял WPS2016, который я установил после деинсталляции WPS2019 (он мне не очень понравился и я откатился на версию 2016).
Стоило мне деинсталлировать WPS2016, как сразу стал нормально работать экспорт в Excel.
Безобразие китайское…
Но, осталось наследие в отношении Ворда — не открываются файлы doc командой OpenFile, если ассоциация таких файлов связана с Word.
Никаких ошибок не выпадает. Просто ничего не происходит когда кликаешь по кнопке, которая должна открыть файл doc.
Если же ассоциировать файлы doc с LibreOffice — то они нормально открываются Либроофисом.
Есть ли у кого-нибудь идеи как заставить OpenFile открывать файлы именно Вордом?
9 Reply by mikhail_a 2019-07-29 17:16:02
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Оба предложенных варианта открытия файлов с помощью ворда работают.
Однако, файл договора может быть не только в ворде, но и в pdf или, вообще, в картинке.
Т.е. надо определять расширение файла перед открытием и либо открывать файл универсальной командой OpenFile (Filename) либо (если doc или docx) открывать командой OpenFile(Filename, ‘winword’).
Существует ли функция для определения расширения файла?
Или надо разбирать текстовое название файла, чтобы понять его расширение?
10 Reply by DriveSoft 2019-07-29 17:26:16
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Posts: 10
Pages 1
You must login or register to post a reply
Обзор
При использовании оператора New или функции CreateObject в Microsoft Visual Basic для создания экземпляра приложения Microsoft Office, может появиться следующее сообщение об ошибке:
Ошибка выполнения ‘429’: компоненту ActiveX не удается создать объект
Эта ошибка возникает, когда запрошенный объект автоматизации не может быть создан с помощью COM и, следовательно, является недоступным для Visual Basic. Сообщение об ошибке обычно отображается на определенных компьютерах, но не другие.
Эта статья содержит советы по устранению неполадок для диагностики и устранения неполадок, вызывающих возникновение этой ошибки.
Дополнительные сведения
В отличие от некоторых ошибок в Visual Basic нет не одной из причин об ошибке 429. Проблема возникает из-за ошибки в конфигурации системы или приложения или компонента отсутствует или поврежден. Поиск точная причина заключается в возможности устранения. При возникновении этой ошибки на клиентском компьютере, существует ряд вещей, которые необходимо проверить для выявления и устранения ошибки.
Позже, элементы предоставляют некоторые практические советы по устранению данной ошибки при работе с приложениями Office. Часть этой информации также относится к серверам Microsoft Office COM также, но в данной статье предполагается, что вы пытаетесь автоматизации Microsoft Office.
Проверка кода
Первое место, чтобы начать поиск проблемы — в коде. До устранения ошибки, необходимо знать, где произошла ошибка. Попробуйте сузить до одной строки кода.
Найдя код, который не удается, попробуйте сделать следующее:
-
Убедитесь, что в коде используется явное создание объекта. Любые проблемы проще найти и определить, если проблема сведена до отдельного действия. Например не выполните следующее:
Application.Documents.Add 'DON'T USE THIS!!
или:
Dim oWordApp As New Word.Application 'DON'T USE THIS!!
'... some other code
oWordApp.Documents.AddОба эти метода используется неявное создание объекта. Microsoft Word не начинается, пока переменная называется по крайней мере один раз. Поскольку переменная может вызываться в разных частях программы, это может сделать проблему трудно локализовать. Кроме того неясно, связана ли проблема с созданием объекта приложения или объекта документа.
Вместо этого указать явные вызовы для создания каждого объекта в отдельности:
Dim oWordApp As Word.Application
Dim oDoc As Word.Document
Set oWordApp = CreateObject("Word.Application")
'... some other code
Set oDoc = oWordApp.Documents.AddЭто упрощает выявление проблемы и делает код более удобным для чтения.
-
При создании экземпляра приложения Microsoft Office, используйте вместо New CreateObject . CreateObject более точно соответствует процесс создания, используемый большинство клиентов Visual C++ и позволяет возможные изменения CLSID сервера между версиями. Функция CreateObject можно использовать с объектами с ранним связыванием и поздним связыванием.
-
Проверьте правильность строки ProgID, передаваемые CreateObject , а также является независимость от версии (то есть использовать «Excel.Application» вместо «Excel.Application.8»). Возможно, что система, которую дает сбой имеет более старой или новой версии Microsoft Office до версии, указанной в идентификатор ProgID.
-
Для упрощения отладки приложений, которые не запускаются в Интегрированной среде разработки, команда Erl сообщить номер строки, который не проходит. Например следующий код сообщит, какой объект автоматизации невозможно (Word или Excel):
Dim oWord As Word.Application
Dim oExcel As Excel.ApplicationOn Error Goto err_handler
1: Set oWord = CreateObject("Word.Application")
2: Set oExcel = CreateObject("Excel.Application")' ... some other code
err_handler:
MsgBox "The code failed at line " & Erl, vbCriticalИспользуйте сочетание окон сообщений и номеров строк для отслеживания ошибки.
-
Попробуйте использовать позднее связывание (то есть Dim oWordApp как объект). Объекты с ранней привязкой требуют их настраиваемые интерфейсы были переданы через границы процессов. Если маршалинг пользовательского интерфейса во время CreateObject или Создатьпроблемы, вы получите сообщение об ошибке 429. Позднее присоединенного объекта использует определенный системой интерфейс (IDispatch), не требуется настраиваемый прокси для маршалинга. Попробуйте использовать позднее присоединенного объекта для просмотра, если это делает разницу.
Если проблема возникает только в том случае, когда объект является раннее связывание, проблема связана с серверного приложения и обычно можно исправить путем переустановки приложения (см. ниже).
-
При автоматизации из ASP или компонента MTS используйте CreateObject вместо Server.CreateObject(). Используя Server.CreateObject будет создан экземпляр приложения Office с использованием идентификатора пакета MTS, который приводит к проблемам с Microsoft Office.
Проверка сервера автоматизации
Самые распространенные причины возникновения ошибки CreateObject или New , проблем с самим приложением сервера. Как правило эти проблемы являются конфигурации или установки приложения. Ниже приведены некоторые элементы для проверки.
-
Проверьте Microsoft Office, приложение, которое требуется автоматизация установлена на локальном компьютере и убедитесь в том, что можно запустить приложение с самого начала и запустить диалоговое окно. Если программа не может быть запущена вручную, он не будет работать через автоматизацию.
-
Перерегистрируйте приложение, введя путь к серверу в начале и затем запустить диалоговое окно и затем добавить к концу строки/regserver . Нажмите кнопку ОК. Это без вмешательства пользователя необходимо запустить приложение и повторно зарегистрировать его как COM-сервер. Если неполадка связана с раздел реестра отсутствует, это обычно будет исправить.
-
Проверьте LocalServer32 в разделе CLSID для приложения, которое требуется автоматизация. Убедитесь, что он указывает на правильное расположение приложения и убедитесь, что указан путь в формате короткого пути (DOS 8.3). Хотя он не является обязательным требованием, на сервере будет зарегистрирован с помощью краткого пути, длинные имена путей, включающие пробелы известны возникновение проблем в некоторых системах (см. ниже).
Чтобы проверить раздел пути, хранящиеся на сервере, запустите редактор реестра Windows, введя команду regedit в начале, а затем запустите диалоговое окно. Перейдите к разделу HKEY_CLASSES_ROOTClsid. В этом разделе вы найдете CLSID для зарегистрированных серверов автоматизации в системе. Позже с помощью значений, найти ключ, представляющий приложение Office требуется Автоматизация и проверьте его раздел LocalServer32 пути.
+========================+=========================================+
| Office Server | CLSID Key |
+========================+=========================================+
| Access.Application | {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9} |
+————————+——————————————+
| Excel.Application | {00024500-0000-0000-C000-000000000046} |
+————————+——————————————+
| FrontPage.Application | {04DF1015-7007-11D1-83BC-006097ABE675} |
+————————+——————————————+
| Outlook.Application | {0006F03A-0000-0000-C000-000000000046} |
+————————+——————————————+
| PowerPoint.Application | {91493441-5A91-11CF-8700-00AA0060263B} |
+————————+——————————————+
| Word.Application | {000209FF-0000-0000-C000-000000000046} |
+————————+——————————————+
Соответствует ли путь фактическое расположение файла? Имейте в виду, что в короткое имя создать впечатление, что путь указан правильно, когда он не может быть. Например Microsoft Office и Microsoft Internet Explorer (если он установлен в расположениях по умолчанию) будет иметь короткий путь «C:PROGRA~1MICROS~X» где X — некоторое число. Это не очевидно, что вы находитесь на короткое имя.Можно проверить правильность пути действительно скопировать значение из реестра и вставки в начало, а затем диалоговое окно Запуск (удалить переключатель/Automation до запуска приложения). Запускается ли приложение при нажатии кнопки ОК? Если Да, сервер зарегистрирован правильно. Если нет, следует заменить значение раздела LocalServer32 на правильный путь (используйте краткий путь, если это возможно).
-
Известны проблемы возникает при автоматизации Word или Excel, если шаблон Normal.dot (Word) или файл ресурсов Excel.xlb (Excel), был поврежден. Чтобы проверить, если произошло повреждение, поиск локальных жестких дисков для поиска всех экземпляров Normal.dot или *.xlb. (Обратите внимание, что при запуске Windows 2000, Windows NT или Windows 95 или Windows 98 с включенными профилями, может оказаться несколько копий этих файлов для каждого профиля пользователя в системе.) Временно переименуйте файлы Normal.dot или файлы *.xlb и повторно запустите проверку автоматизации (Word и Excel создаст эти файлы, если они не может их найти). Код теперь работать? Если Да, выберите файлы, которые вы переименовали следует удалить, так как они повреждены. Если это не так, переименуйте их обратно в их исходные имена, будут потеряны все пользовательские параметры, сохраненные в этих файлах.
-
При работе в Windows NT, Windows 2000, Windows XP или Windows Server 2003 система, запустите приложения под учетной записью администратора. Серверов Office требуется доступ на чтение и запись в реестре и на диске и могут не загружаться должным образом, если ваши текущие параметры безопасности запрещают эту привилегию.
Проверка системы
Конфигурация системы также может вызвать проблемы с созданием out-of-process COM-серверов. Ниже приведены несколько советов по проверке систем место возникновения ошибки.
-
Проблема происходит с любым сервером out-of-process? Если у вас есть приложение, которое использует только определенный COM-сервер (например, Word), вы захотите проверить на другой сервер out-of-process, чтобы убедиться, что проблема не связана с COM сам слой. Если нет out-of-process COM-сервера могут быть созданы в этой системе, переустановке системы OLE файлов (см. ниже), или для устранения этой проблемы потребуется переустановка операционной системы.
-
Проверьте номера версий системных файлов OLE, которые управляют автоматизацией. Эти файлы обычно устанавливаются как набор и должно соответствовать номера построений. Неправильно настроенная программа установки может ошибочно установить файлы по отдельности, к ним становятся несоответствие. Чтобы избежать проблем при автоматизации, следует проверять файлы, убедитесь, что файлы совпадают построений.
Файлы автоматизации можно найти в каталоге WindowsSystem или WinntSystem32. Ниже приведен список файлов для проверки:
+—————+————-+—————-+
| File Name | Version | Date Modified |
+—————+————-+—————-+
| Asycfilt.dll | 2.40.4275 | March 08, 1999 |
| Oleaut32.dll | 2.40.4275 | March 08, 1999 |
| Olepro32.dll | 5.0.4275 | March 08, 1999 |
| Stdole2.tlb | 2.40.4275 | March 08, 1999 |
+—————+————-+—————-+
Проверьте версию файла, щелкните правой кнопкой мыши файл в обозревателе и при выборе свойства из всплывающего меню. Наиболее важные значения, последние четыре цифры в версии файла (номер сборки) и дату последнего изменения. Необходимо убедиться, что эти значения одинаковы для всех файлов автоматизации.Обратите внимание, что номера версии и даты, приведенном выше, например исключительно в целях. Значения могут отличаться. Важно, что эти значения соответствуют друг другу, а не в этой таблице.
Если файлы не соответствуют номера сборок или даты изменений, вы можете загрузить самораспаковывающийся программа обновит файлы автоматизации. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
290887 VBRun60sp6.exe устанавливает файлы времени выполнения Visual Basic 6.0 SP6
-
Windows NT 4.0 имеет известные проблемы с запуском серверы автоматизации, которые находятся в папке, которая содержит пробелы в имени и напоминает другую папку, совпадают с первыми 8 символами. Например сервер, живущих в C:Program FilesSomeFolder может не запуститься во время вызова к CreateObject, если система называется C:Program StuffSomeFolder другую папку. Дополнительные сведения см в следующей статье базы знаний:Дополнительные сведения об этой проблеме и действия, чтобы избежать этого, щелкните следующий номер статьи базы знаний Майкрософт:
Ошибка 185126 : COM и OLE-сервер не запускается в Windows NT 4.0
Переустановка Microsoft Office.
Если ни один из предыдущих шагов позволяет устранить проблему, рассмотрите возможность удаления и переустановки Microsoft Office. Корпорация Майкрософт рекомендует сначала удалить существующую версию, а затем переустановите с исходных установочных дисков.
Полный список удаляемых элементов можно найти в следующих статьях базы знаний:
219423 OFF2000: как полностью удалить Microsoft Office 2000
158658 OFF97: как полностью удалить Microsoft Office 97
Ссылки
Дополнительные сведения об устранении неполадок при сообщении об ошибке ‘429’ щелкните следующий номер статьи базы знаний Майкрософт:
240377 HOWTO: Убедитесь в правильности установки Jet 3.5 (часть I)
Последние сведения и примеры кода по автоматизации Microsoft Office можно найти на сайте поддержки Microsoft Online по:
http://support.microsoft.com/ofd
Sh_Vlad
13.01.15 — 12:18
Здравстуйте.
Перестало работать:
Ексель = Новый COMОбъект(«Excel.Application»);
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса
Куда смотреть?
Спасибо.
mikecool
1 — 13.01.15 — 12:20
не установлен эксель, смотреть в программы и компоненты
Sh_Vlad
2 — 13.01.15 — 12:20
(1) Установлен. 2003
Feunoir
3 — 13.01.15 — 12:25
Проверить наличие HKEY_CLASSES_ROOTExcel.Application в реестре.
Sh_Vlad
4 — 13.01.15 — 12:33
(3) Наличиствует. + HKEY_CLASSES_ROOTExcel.Application.11
Sh_Vlad
5 — 13.01.15 — 12:34
Работало до недавнего времени. Года три обработке
Leksus
6 — 13.01.15 — 12:35
В релизе 8.3.5.1400 кажется что-то исправляли с подключением ком
senior
7 — 13.01.15 — 12:38
создай этот же COM объект в блокноте на VB, думаю проблема не в 1С
Sh_Vlad
8 — 13.01.15 — 13:05
(7) Если можно — поподробнее…
DrZombi
9 — 13.01.15 — 13:13
(8) А точно 2003? Бывает, что обновляются до 2007 и усе
Rie
10 — 13.01.15 — 13:15
(4) Ну так попробуй указать явно «Excel.Application.11»
Rie
11 — 13.01.15 — 13:18
+(10) И посмотри, на всякий случай, в реестре в CLSID — путь правильный?
Sh_Vlad
12 — 13.01.15 — 13:23
(11) Там вообще не путь. А {00024500-0000-0000-C000-000000000046}
Rie
13 — 13.01.15 — 13:28
(12) В разделе CLSID этот ключ найди и посмотри куда LocalServer (LocalServer32) смотрит.
Sh_Vlad
14 — 13.01.15 — 13:48
(13) Путь правильный
Rie
15 — 13.01.15 — 13:49
Пробовал (10)?
Sh_Vlad
16 — 13.01.15 — 13:49
Да
Rie
17 — 13.01.15 — 14:15
(8) Создай (в блокноте) файл с расширением .vbs
Вставь туда
set xl = CreateObject(«Excel.Application»)
xl.Workbooks.Add
xl.Visible = 1
Сохрани и запусти.
Что получилось?
Sh_Vlad
18 — 13.01.15 — 14:59
(17) Получилось — открылась новая книга Ексель
Sh_Vlad
19 — 13.01.15 — 15:03
Причем оба варианта — Excel.Application и Excel.Application.11
Sh_Vlad
20 — 13.01.15 — 15:54
Люди добрые, есть еще варианты причин ошибки?
Zamestas
21 — 13.01.15 — 15:57
(20) Запустить от администратора пробовал?
Sh_Vlad
22 — 13.01.15 — 16:01
(21) Что запустить — Предприятие? Вообще-то учетка админская…
DrZombi
23 — 13.01.15 — 16:10
(22) Обновись на старый релиз
Zamestas
24 — 13.01.15 — 16:11
(22) Да предприятие, в win7/2008 и старше админские права не означают полные права.
Sh_Vlad
25 — 13.01.15 — 16:19
Не помогло…
ZUM
26 — 13.01.15 — 16:31
Здравствуйте!
1) Попробуйте это
При подключении к базе com-объектом вылетает ошибка (файл с ошибкой во вложении, вылетает на строчке кода при создании ком-объекта: Коннектор = Новый COMОбъект(«V8.COMConnector»);)
На форумах по данной ошибке нашла решение, но попробовав это проделать, у меня не получилось уже на первом пункте, возможно не хватает прав. Прошу вас мне помочь.
1. Администрирование — Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ — Создать приложение – Создать новое приложение – вводим имя «V82.COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (Администратор)
2. В появившейся ветке V82COMConnector – подветка Компоненты – создание нового компонента – Установка новых компонентов — <каталог 1С>bincomcntr.dll
3. Правой кнопкой по ветке V82COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» — Поставил галку «Применить политику программных ограничений» — Уровень ограничений «Неограниченный»
2) Если не помогло
Проблема :
1. Не установлен Microsoft Excel
2. Для работы ком-объекта необходимо наличие папки
For Windows 2008 Server x64
C:WindowsSysWOW64configsystemprofileDesktop
For Windows 2008 Server x86
C:WindowsSystem32configsystemprofileDesktop
Источник (https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?forum=innovateonoffice)
Sh_Vlad
27 — 13.01.15 — 16:48
1) Проделал.
2) Папка есть, только вместо Desktop — по русски Рабочий стол
Не помогло…
igork1966
28 — 13.01.15 — 16:51
(27) а если указать имя сервера в конструкторе?
localhost
Rie
29 — 13.01.15 — 16:51
(18) То есть, Excel спокойно коннектится.
Наивный вопрос: а откуда коннектится? С клиента или с сервера?
Rie
30 — 13.01.15 — 16:52
(28) То это будет уже совсем другая история…
Sh_Vlad
31 — 13.01.15 — 16:59
(29) Клиент предприятия на терминальном сервере. Там же запускал скрипт.
Sh_Vlad
32 — 13.01.15 — 17:00
Или вопрос не про то?
Rie
33 — 13.01.15 — 17:03
(32) Про то. Тогда — странно очень.
Может, обработку правили — и буковку не из того алфавита поставили? Или (6)…
Sh_Vlad
34 — 13.01.15 — 17:05
Работало везде «еще вчера»
Обработку не правили уже полгода (тем более в этой строке). Ексель не переустанавливали, т.к. см. выше
yukon
35 — 13.01.15 — 17:05
(33)(32) Не про то.
Создание СOM-объекта происходит &НаКлиенте или &НаСервере?
Sh_Vlad
36 — 13.01.15 — 17:06
&НаСервере
Sh_Vlad
37 — 13.01.15 — 17:08
Сейчас надо &НаКлиенте?
igork1966
38 — 13.01.15 — 17:09
(37) дык у тебя на сервере и пытается создать объект
Rie
39 — 13.01.15 — 17:10
Так он и vbs запускал на сервере-то… И обработка раньше у него работала…
yukon
40 — 13.01.15 — 17:11
Значит только костылями. Заказчику покажи это:
Вопросы серверной автоматизации Office
https://support.microsoft.com/kb/257757
Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.
yukon
41 — 13.01.15 — 17:12
(39) На каком сервере — на терминальном или 1С-ном?
Rie
42 — 13.01.15 — 17:13
(41) Предполагаешь, что они сервер переставляли? Говорит ведь, что раньше — работало.
yukon
43 — 13.01.15 — 17:16
(42) 1С-ный по любому переставляли.
Для 8.3 есть еще вариант, что включили в профилях безопасности ограничение на COM-объекты.
Sh_Vlad
44 — 13.01.15 — 17:28
Так что с 1С-ным сервером не так?
yukon
45 — 13.01.15 — 17:49
(44) Пока все нормально (глянь на всякий случай профили безопасности).
Терминальный сервер и сервер 1С на одной машине работают?
Sh_Vlad
46 — 14.01.15 — 08:56
Проблема остается.
(45) На разных.
ProxyInspector
47 — 14.01.15 — 09:15
Явно автор не раскрыл когда у него перестало работать. Я боюсь, что после пытания паяльником выяснится, что был установлен Windows 2008 x 64 сервер. Установлен сервер 1с предприятия х 64. Обновлена версия 1с предприятия с 8.2 на 8.3. Запуск сервера 1с предприятия раньше запускался от имени System, а сейчас запускается от имени Usr1c8. Раньше 1с работала в режиме толстого клиента, а сейчас на управляемых формах.
И вот после этого НЕОЖИДАННО перестал работать Exell в режиме ОЛЕ.
Я почему-то не очень сильно удивляюсь
Sh_Vlad
48 — 14.01.15 — 09:45
(47) Что нужно изменить в коде чтобы работала конструкция Новый COMОбъект(«Excel.Application»);
Все указанные изменения имеют место быть. Обработка сделана под управляемые формы
Dolphinbet
49 — 14.01.15 — 09:51
To resolve this issue follow these steps
1. Login to the server as a administrator.
2. Go to «Start» -> «Run» and enter «taskmgr»
3. Go to the process tab in task manager and check «Show Processes from all users»
4. If there are any «Excel.exe» entries on the list, right click on the entry and select «End Process»
5. Close task manager.
6. Go to «Start» -> «Run» and enter «services.msc»
7. Stop the service automating Excel if it is running.
8. Go to «Start» -> «Run» and enter «dcomcnfg»
9. This will bring up the component services window, expand out «Console Root» -> «Computers» -> «DCOM Config»
10. Find «Microsoft Excel Application» in the list of components.
11. Right click on the entry and select «Properties»
12. Go to the «Identity» tab on the properties dialog.
13. Select «The interactive user.»
14. Click the «OK» button.
15. Switch to the services console
16. Start the service automating Excel
17. Test you application again.
yukon
50 — 14.01.15 — 10:07
(46) Вот это «Получилось — открылась новая книга Ексель» делалось на сервере 1С?
Sh_Vlad
51 — 14.01.15 — 12:04
Помогла переустановка офиса на сервере.
Теперь не хочет открывать шаблон:
Ошибка при вызове метода контекста (Add)
Ексель.WorkBooks.Add(«……..TemplateZayvka.xlt»);
Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «………..TemplateZayvka.xlt». Это может быть вызвано одной из следующих причин.
• Указан несуществующий файл или путь.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.
Файл существует. Никем не открыт. Имя не с чем не совпадает
Sh_Vlad
52 — 14.01.15 — 12:04
Доступ полный для всех
Sh_Vlad
53 — 14.01.15 — 12:22
Скрипт открывает этот файл
Dolphinbet
54 — 14.01.15 — 12:59
(51) см. 49
Dolphinbet
55 — 14.01.15 — 13:04
Только в пункте 13. Select «The interactive user.» вместо interactive user надо указать конкретного пользователя под котороым запускается сервер 1С-Предприятие.
DrZombi
56 — 14.01.15 — 13:07
(47) Обычно такое перестает работать после обновления Форточек.
У нас как то было, при обновлении рабочей станции, т.е. обычного ПК. Но офис там был 2007-ой, обновление на него так подействовало
Sh_Vlad
57 — 14.01.15 — 13:08
По (49) все проделано. «Microsoft Excel Application» такой ветки в настройках нет. В тех что есть стоит «Запускающий пользователь» («The interactive user»? ).
Dolphinbet
58 — 14.01.15 — 13:10
(57) так вот надо не «Запускающий пользователь» а тот под которым запускается сервер 1С
Sh_Vlad
59 — 14.01.15 — 13:27
Сервер запускается системной учетной записью. И куда пихать этого пользователя — нужной ветки нет
Dolphinbet
60 — 14.01.15 — 13:27
а почему нет «Microsoft Excel Application»??
Sh_Vlad
61 — 14.01.15 — 13:31
(60) У нас разделение труда. Офис устанавливает другая служба. Не могу сказать. Есть «Office Licensing COM Server 14»
hhhh
62 — 14.01.15 — 13:34
(59) ну, поменяйте в строке запуска сервера 1с системную запись на другого пользователя. Зачем вы системную туда вбухали? Можно было оставить пользователя, который там по умолчанию был: Usr1cv8
Sh_Vlad
63 — 14.01.15 — 13:38
(62) Смысл менять в сервере 1с, если его надо прописать в настройках DCOM Екселя — некуда писать…
Dolphinbet
64 — 14.01.15 — 13:56
(61) похоже из-за этого и не работает, «Microsoft Excel Application» должен быть в ветке «Настройка DCOM»
Sh_Vlad
65 — 14.01.15 — 14:09
Как его туда запихнуть? Не вручную же…
На других серверах тоже нет. Есть например «Книга Microsoft Office Excel 2007»
Dolphinbet
66 — 14.01.15 — 14:15
(65) Да, действительно, почему-то в серверных ОС этой ветки нет…
Dolphinbet
67 — 14.01.15 — 15:01
может по коду приложения поискать {00024500-0000-0000-C000-000000000046} ?
Dolphinbet
68 — 28.01.15 — 09:31
Проблема описана в теме Может кто в курсе как решить?
если ты думаешь что я буду читать там, а потом отвечать тут, когда даже не ты автор темы той — ошибаешся… описывай проблему тут свою
если ты думаешь что я буду читать там, тут, а потом отвечать, когда даже не ты автор темы той — ошибаешся… описывать проблему не нужно
1С 8.3.5 (32-битный). Excel 2010 (64-битный). Создаю обработку с кодом: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «c:Excel1.xls»…
всё так, читай теорию, пользуйся поиском, тема обсуждается 2 раза в неделю точно.
погуглил, много разных советов но ничего не подходит. Решения проблемы не нашел в общем
Что ты хочешь делать с этим файлом дальше? Почему на сервере?
у тебя код &наСервере а файл >>Локально. >>c:Excel1.xls Дальше объяснять? ЗЫ и да, я прочитал тему по ссылке
у меня локально = на сервере
Все крутится на одном компе в общем
и у сервера есть доступ на диск C?
доступ к файлу есть у всез пользователей
+ по крайней мере файлы создаются нормально
мне надо в регламентном задании
а если сделать &НаКлиенте ?
у меня создается файл под этим же пользователем, как у него не может быть доступа на созданный файл?
Объясню для людей которых забанили в гугле, на клиенте обращаешься к файлику, пихаешь во временное хранилище, и производишь манипуляции, данные передаешь на сервер и обрабатываешь
база файловая? или серверная?
кто-нибудь может сделать аналогичную простенькую обработку и проверить у себя?)
нет смысла. Ты все правильно делаешь. 1С сырая еще
у пользователя от которого запущен сервер не доступа к файлу
я же говорю, что под этим же пользователем и создаю файл…
чудес не бывает попробуй создай его 1с-кой &НаСервере
да, создаю файл отчета в формате xls на сервере, и затем пытаюсь его открыть (на сервере)
давай так, если я напишу твою обработку в течении сегодняшнего дня, используя гугл, и то что я тебе сказал, с пруфами конечно, то ты мне платишь 5000? Норм?
курить права на каталог и файл проверить, может файл захвачен в момент открытия
это все проверено. У меня встречное предложение, чтобы кто-нибудь потратил 5 минут и написал подобную обработку и отписался о результатах
написать не проблема — проверить негде ) а текстовый файл без COMа прочитает?
а если паузу сделать перед ?
я уже написал, у меня все работает. А тебе я советую читать гугл. У тебя 100 пудов 32 разрядный ексель и 64 разрядный 1с или наоборот, так что у меня все отработало без проблем, и это не значит что проблемы нет, но беглый гуглинг кинул меня на сайт где описан подобный метод: To resolve this issue follow these steps 1. Login to the server as a administrator. 2. Go to «Start» -> «Run» and enter «taskmgr» 3. Go to the process tab in task manager and check «Show Processes from all users» 4. If there are any «Excel.exe» entries on the list, right click on the entry and select «End Process» 5. Close task manager. 6. Go to «Start» -> «Run» and enter «services.msc» 7. Stop the service automating Excel if it is running. 8. Go to «Start» -> «Run» and enter «dcomcnfg» 9. This will bring up the component services window, expand out «Console Root» -> «Computers» -> «DCOM Config» 10. Find «Microsoft Excel Application» in the list of components. 11. Right click on the entry and select «Properties» 12. Go to the «Identity» tab on the properties dialog. 13. Select «The interactive user.» 14. Click the «OK» button. 15. Switch to the services console 16. Start the service automating Excel 17. Test you application again.
но реально проверил пользователя usr1cv8?
и вообще… есть тонна ВК, котоыре работают лучше и быстрее, чем ексель поднятый по ком, задумайтесь об этом.
+так же предлагаю попробовать создать папки C:WindowsSysWOW64configsystemprofileDesktop C:WindowsSystem32configsystemprofileDesktop Хз зачем, может пользователь из службы excel их исползует… не разбирался
ПутьКФайлуотчета неправельный
ну у меня вроде все так и есть.. только в службах у меня нет «service automating Excel»
а com-объект запускается под «запускающим пользователем»
о, поставил запускать под текущим пользователем и заработало!
Не за что. Как я и говорил — 30 секунд гугла решило проблему. с тебя 5к )))
и все-таки что за ВК которые лучше excel?)
мне и самому не нравится excel по кому, но надо кое-что подправить в отчете…
это чисто чтение, отформатировать содержимое документа там нельзя…
не, тебя что, правда в гугле забанили? Ну поищи чуть чуть, найди нужную… может не нативную, но все же
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
← →
scorpio ©
(2005-06-29 17:06)
[0]
Добрый день мастера. Подскажите, сталкнулся с такой проблемой. Писал программу-отчет, данныет отправляются в EXCEL, писал по WIN2000, программа работает, под Win 98, выдает ошибку, постави дельфи на нее и нашел где
xls := CreateOleObject(«Excel.Application»);
Объясните ктонибудь, в чем проблема, и как от нее избавиться ???
← →
-=XP=- ©
(2005-06-29 17:23)
[1]
Наверное, Excel не установлен? Или запорчен реестр?
Текст сообщения можно озвучить?
← →
scorpio ©
(2005-06-29 18:16)
[2]
Ексель поставил, XP-шный, программа заработала, вот только проблема, на машинах где стоит OFICE 2000, выскакивает ошибка «Ошибка при выплолнении приложений-сервер «, мне что, нужно ставить все три OFICE-а на своей машине и компилировать под каждым свое приложение, или можно как то это обойти.
← →
КиТаЯц ©
(2005-06-30 09:11)
[3]
Может поможет…
try
try
XL := GetActiveOleObject("Excel.Application");
except
XL := CreateOleObject("Excel.Application");
end;
except
raise Exception.Create("Невозможно запустить Excel");
end;
← →
Scorpio ©
(2005-07-01 10:39)
[4]
Это конечно работает, но вот только есть такой вопрос, по какому принципу данные передаются из FAST REPOTRа, там ведь не нужно устанавливать ексель на машину, просто вся проблема в том, что эти отчеты считаются на разных компах с разными операционками и офисами, как мне зделать так, чтобы программа была универсальна ?
← →
dmitry501 ©
(2005-07-01 10:59)
[5]
Scorpio © (01.07.05 10:39) [4]
Использовать при разработке excel 97 Все последующие с ним совместимы, если вы используете позднее связывание.
Delphi Rio, Win10 64 bit, Excel 2016-64 bit. I have a utility I wrote in Delphi a while back. It opens an html file, starts Excel, parses the html file, and dumps various parts into Excel. It has been working great… All of the sudden, I go to run it recently and I am now getting errors. Specifically I am getting EOleSysError — Server Execution failed, ProgID: Excel.Application. This occurs when trying to start Excel. I had not recompiled my program, it just stopped working and now gives this error. I verified that Excel can be manually started/used/stopped without issue. I verified that there are no Excel executables running in the background. I did try a full recompile on my app, no change… The only things on the system that have changed is that windows did a pretty big update, and I have installed a few additional programs (Logitech camera, etc. none that talk to Excel). I am at a loss. When I run through my code, it fails on the CreateOleObject line. Here is the routine..
// 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 is a global variable of type ExcelApplication. Among others, my USES clause contains
System.UITypes, ComObj, Office_TLB, Excel_TLB, DB,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls,...
I went and checked a totally different program which again, starts and works with Excel. I receive a similar error: EOleSysError: Server Execution failed, ClassID:{bunch of number… appears to be a GUID}. This program has not been recompiled either. Any thoughts?
Any idea what is going on?
** Additional Info. I get Error messages in the Windows Event Log when I try to run my program(s). The messages are:
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 — I found a MS Word Macro which uses CreateObject… to open Excel. This will not work either in my Computer. This leads me to believe someone my computer config is messed up. I did go into Windows update and make sure I have all updates applied.
**EDIT3 — I did both a Office Quick Repair, as well as Online/Full Repair (which downloads and appears to re-install Office. Neither changes the issue.
Delphi Rio, Win10 64 bit, Excel 2016-64 bit. I have a utility I wrote in Delphi a while back. It opens an html file, starts Excel, parses the html file, and dumps various parts into Excel. It has been working great… All of the sudden, I go to run it recently and I am now getting errors. Specifically I am getting EOleSysError — Server Execution failed, ProgID: Excel.Application. This occurs when trying to start Excel. I had not recompiled my program, it just stopped working and now gives this error. I verified that Excel can be manually started/used/stopped without issue. I verified that there are no Excel executables running in the background. I did try a full recompile on my app, no change… The only things on the system that have changed is that windows did a pretty big update, and I have installed a few additional programs (Logitech camera, etc. none that talk to Excel). I am at a loss. When I run through my code, it fails on the CreateOleObject line. Here is the routine..
// 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 is a global variable of type ExcelApplication. Among others, my USES clause contains
System.UITypes, ComObj, Office_TLB, Excel_TLB, DB,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls,...
I went and checked a totally different program which again, starts and works with Excel. I receive a similar error: EOleSysError: Server Execution failed, ClassID:{bunch of number… appears to be a GUID}. This program has not been recompiled either. Any thoughts?
Any idea what is going on?
** Additional Info. I get Error messages in the Windows Event Log when I try to run my program(s). The messages are:
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 — I found a MS Word Macro which uses CreateObject… to open Excel. This will not work either in my Computer. This leads me to believe someone my computer config is messed up. I did go into Windows update and make sure I have all updates applied.
**EDIT3 — I did both a Office Quick Repair, as well as Online/Full Repair (which downloads and appears to re-install Office. Neither changes the issue.
Delphi Rio, Win10 64-разрядная версия, Excel 2016-64-разрядная версия. У меня есть утилита, которую я написал в Delphi некоторое время назад. Он открывает html-файл, запускает Excel, анализирует html-файл и выгружает различные части в Excel. Он отлично работает … Внезапно я недавно запустил его и теперь получаю ошибки. В частности, я получаю EOleSysError — Ошибка выполнения сервера, ProgID: Excel.Application. Это происходит при попытке запустить Excel. Я не перекомпилировал свою программу, она просто перестала работать и теперь выдает эту ошибку. Я убедился, что Excel можно запускать/использовать/останавливать вручную без проблем. Я убедился, что в фоновом режиме не запущены исполняемые файлы Excel. Я попытался полностью перекомпилировать свое приложение, без изменений… Единственное, что изменилось в системе, это то, что Windows сделала довольно большое обновление, и я установил несколько дополнительных программ (камера Logitech и т. д., ни одна из которых не говорит чтобы преуспеть). Я в недоумении. Когда я запускаю свой код, он терпит неудачу в строке 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: Server Execution failed, 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 и убедился, что у меня применены все обновления.
** РЕДАКТИРОВАТЬ 3. Я выполнял как быстрое восстановление Office, так и онлайн/полное восстановление (которое загружает и, как представляется, переустанавливает Office. Ни то, ни другое не меняет проблему.
A user recently saw the following error message when trying to export data from the RockWorks Utilities datasheet to Excel:
exception class : EOleSysError
exception message : Invalid class string, ProgID: «Excel.Application».
main thread ($6e4):
0058a30d +00b5 RockWorks15.exe ComObj 1418 +7 CreateOleObject
00b5724b +023f RockWorks15.exe XlsStuff 169 +54 xls_object.export_data
This type of error indicates that Excel has not been set up properly in the Windows registry — RockWorks looks there for the «class string» to know where to start up Excel, and it cannot locate this information. This problem could occur with an incomplete installation of Excel, and running the Office installation again and choosing Repair could help.
It turns out that another culprit is the Microsoft Office Click-to-Run which «uses Microsoft streaming and virtualization technology» to get you going quickly with the software. I don’t know the details of what this process does/does not establish in the Windows Registry, but if you’re getting the error in RockWorks, you’ll need to switch to an MSI-based edition of Office. There are details about this on the Microsoft website:
http://office.microsoft.com/en-us/excel-help/click-to-run-switch-to-using-an-msi-based-office-edition-HA101850538.aspx?CTT=3
Molly Mayfield
RockWare Inc.
Содержание
- Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- Posts: 3
- 1 Topic by mikhail_a 2019-07-12 15:52:23
- Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 2 Reply by sibprogsistem 2019-07-12 17:45:59
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 3 Reply by DriveSoft 2019-07-12 19:45:26
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- Posts: 9
- 1 Topic by mikhail_a 2019-06-18 13:14:50 (edited by mikhail_a 2019-06-19 16:40:20)
- Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 2 Reply by DriveSoft 2019-06-20 09:56:34
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 3 Reply by mikhail_a 2019-06-21 13:26:55
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 4 Reply by DriveSoft 2019-06-21 13:43:17
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 5 Reply by mikhail_a 2019-06-21 14:47:10
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 6 Reply by mikhail_a 2019-07-01 14:22:26
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 7 Reply by DriveSoft 2019-07-01 14:29:14
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 8 Reply by mikhail_a 2019-07-01 16:49:39
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 9 Reply by DriveSoft 2019-07-04 09:05:57
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- Posts: 10
- 1 Topic by mikhail_a 2019-07-22 17:28:37
- Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 2 Reply by mikhail_a 2019-07-23 08:31:02
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 3 Reply by mikhail_a 2019-07-23 09:24:45
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 4 Reply by mikhail_a 2019-07-23 11:47:27
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 5 Reply by DriveSoft 2019-07-24 10:04:07
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 6 Reply by mikhail_a 2019-07-24 11:09:10
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 7 Reply by DriveSoft 2019-07-25 10:44:46
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 8 Reply by mikhail_a 2019-07-26 15:31:29 (edited by mikhail_a 2019-07-26 15:33:51)
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
- 9 Reply by mikhail_a 2019-07-29 17:16:02
- Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
My Visual Database → Russian → Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
You must login or register to post a reply
Posts: 3
1 Topic by mikhail_a 2019-07-12 15:52:23
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Продолжение проблемы, описанной здесь: http://myvisualdatabase.com/forum/viewtopic.php?id=5403
Решил не тратить время на поиск решения, а просто инсталлировал на ПК Office 2010.
Однако, проблема не решилась.
Простейший код Conn := CreateOleObject(‘Excel.Application’);
приводит к долгому зависанию и затем выдаче сообщения: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Т.е. при наличии установленного на ПК Excel не работают никакие экспорты-импорты из MVD в Excel.
Хотя сам Excel работает нормально.
Но MVD никак не может получить к нему доступ по OLE.
Проверил реестр:
Там есть ключи
HKEY_CLASSES_ROOTExcel.Application
HKEY_CURRENT_USERSoftwareClassesExcel.Application
HKEY_LOCAL_MACHINESOFTWAREClassesExcel.Application
Т.е. по идее не должно быть проблем с нахождением Excel для его запуска.
Но, может что-то с самим механизмом OLE не так.
Может какая служба не запущена?
Или еще что-то?
Есть у кого-нибудь идеи где копать?
2 Reply by sibprogsistem 2019-07-12 17:45:59
- sibprogsistem
- Member
- Offline
- From: Нефтеюганск
- Registered: 2018-04-11
- Posts: 1,775
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
с начало поставил Libre Office — ОК
потом добавил Microsoft Excel — ОК (и овтоматом и нет)
потом удалил Microsoft Excel — и снова все ОК
У меня windows10
3 Reply by DriveSoft 2019-07-12 19:45:26
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Тут к сожалению дело не в MVD, попробуйте например тоже самое проделать в Delphi или Visual Studio, скорей всего получите тот же результат.
функция CreateOleObject реализована не в MVD, если простыми словами, то она как бы системная и MVD на ее выполнение повлиять не может, видимо дело в системе, что то пошло не так.
Источник
Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
My Visual Database → Russian → Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
You must login or register to post a reply
Posts: 9
1 Topic by mikhail_a 2019-06-18 13:14:50 (edited by mikhail_a 2019-06-19 16:40:20)
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Есть кнопка со стандартным действием «Экспорт в Excel».
В настройках кнопки указано свойство «Auto».
Для работы с таблицами установлен LibreOffice Calc. Excel не установлен.
При нажатии кнопки «Экспорт в Excel» выпадает ошибка: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application».
Если же в свойствах кнопки указать вместо auto вывод в LibreOffice Calc, то вывод работает нормально.
Как победить ошибку при установке вывода в «auto»?
У меня сетевое приложение и у разных пользователей стоят разные программы для работы с таблицами.
Т.е. мне нужно действительно «auto» определение в какое приложение выводить данные.
Если нельзя или долго устранять ошибку, то может быть как-то можно в самом скрипте проверять, какое приложение используется на данном ПК для работы с таблицами и посылать данные в него?
2 Reply by DriveSoft 2019-06-20 09:56:34
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Проверьте пожалуйста, какая ошибка возникает, когда в настройках кнопки указан «Excel»
Данная ошибка возникает на всех компьютерах, на которых Excel не установлен? или только на одном?
3 Reply by mikhail_a 2019-06-21 13:26:55
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Получается такая картина:
1. Если на ПК установлен Excel и Libre Office, то экспорт нормально срабатывает в любое приложение (если в кнопке явно указать конкретное приложение — Excel или OpenOffice(Calc) )
Однако, при указании в кнопке значения «auto», открывается Excel, а не то приложение, с которым ассоциировано расширение файла xls.
Т.е. настройка «auto» — ‘это не «auto», а «Excel».
2. Если на ПК установлен только Excel, то экспорт в него работает корректно, а при попытке послать экспорт в OpenOffice(Calc), сообщает, что эта программа не установлена.
Т.е. все ОК.
3. Если на ПК Excel не установлен, а только Libre Office, то экспорт в него делается нормально, а экспорт в «Excel» или «auto» подвешивает программу где-то на минуту, а затем появляется сообщение об ошибке: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application».
Проверить, как это работает на других ПК без установленного Excel пока не могу.
.
Очевидно, ошибка возникает в момент создания объекта Excel.Application, поскольку его на ПК нет.
.
Таким образом, во-первых, кнопка экспорта в режиме auto должна открывать то приложение, с которым ассоциировано расширение xls.
И второе — если Excel не установлен (или ошибка создания объекта), то сообщать, что Excel не установлен.
4 Reply by DriveSoft 2019-06-21 13:43:17
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Режим auto не проверяет ассоциацию расширения xls, а только лишь проверяет, если установлен Excel, открываем в нем, если нету, то проверяет, установлен ли Libre Office.
Пока под рукой нет компьютера без установленного Excel для проверки, но попробую найти, т.к. возможно ошибка связана с некоректным удалением Excel.
Если у кого то из пользователей не уставновлен Excel, просьба проверить это, будет ли таже самая ошибка.
5 Reply by mikhail_a 2019-06-21 14:47:10
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
На этом ПК у меня Excel не стоял никогда.
Но, стоял WPS Office 2016.
И в него экспорт производился нормально при установке кнопки в auto.
В мое отсутствие на работе эту программу по ошибке деинсталлировали с ПК.
Возможно, сделали что-то неправильно.
Я уже поставил ее обратно, но в нее экспорт теперь уже не производится.
Т.е. возможно это проблема конкретного ПК, но надо бы добавить перехват и обработку этой ошибки.
А вообще, правильно было бы проверять ассоциацию расширения файла и запускать привязанное по умолчанию приложение
6 Reply by mikhail_a 2019-07-01 14:22:26
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Режим auto не проверяет ассоциацию расширения xls, а только лишь проверяет, если установлен Excel, открываем в нем, если нету, то проверяет, установлен ли Libre Office.
Вопрос — к какому ключу идет обращение, чтобы понять установлен ли Excel?
7 Reply by DriveSoft 2019-07-01 14:29:14
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Имеете ввиду ключ реестра?
Проверяется другим способом:
в принципе вы можете реализовать режим Auto скриптами, создайте на форме две кнопки, одна для Excel, другая для LibreOffice, данные кнопки можно скрыть с формы, затем расположите еще одну кнопку, где вы сможете по своему алгоритму определять, что именно установлено у пользователя и соотвественно нажимать соотвествующую скрытую кнопку.
8 Reply by mikhail_a 2019-07-01 16:49:39
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Проверяется другим способом:
Этот код ищет в реестре программу с названием «Excel.Application».
Все ProgID должны располагаться в ветке реестра HKEY_LOCAL_MACHINESOFTWAREClasses
Но, в этой ветке на моем ПК нет строки «Excel.Application» (проверил вручную)
Зато есть в какой то другой ветке и без параметра CLSID
Может быть Ваш код не учитывает отсутствие этой строки в данной ветке реестра или отсутствие у него CLSID?
И поэтому возникает ошибка.
9 Reply by DriveSoft 2019-07-04 09:05:57
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Функция CLSIDFromProgID не является моей, она системная, к сожалению я не смогу изменить механизм ее работы.
Источник
Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
My Visual Database → Russian → Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
You must login or register to post a reply
Posts: 10
1 Topic by mikhail_a 2019-07-22 17:28:37
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Topic: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Данная ошибка возникает при попытке импорта или экспорта таблицы в Excel.
Переустановка Office ничего не дала.
Трехнедельные танцы с бубнами по найденным в инете идеям в виде внесения изменений в реестр, изменения прав доступа к объектам и тому подобное, успехов не принесли.
Более того, оказывается сама microsoft открещивается от своего офиса в вопросах автоматизации: https://support.microsoft.com/ru-ru/hel … -of-office
Т.е. она говорит, что при использовании механизма OLE обращение к Office может сработать, а может и нет.
Прямо как у меня — на некоторых ПК все работает нормально, а на одном — возникает ошибка.
Кстати, к Ворду тоже обращение не проходит.
Для эксперимента повторил модуль экспорта на Delphi (создание файла Excel).
Запустил два раза — создание файлов прошло нормально, а третий раз — ошибка приложения-сервера.
И теперь всегда только ошибка возникает.
Вообще — фантастика! Как будто где-то пробка
.
Как рекомендует Microsoft, надо работать с Excel без OLE.
На эту тему нашел готовый модуль для Delphi: http://www.delphisources.ru/pages/faq/b … t_ole.html
Поскольку сам я не силен в Delphi, просьба проверить работу этого кода и если работает включить его в MVD.
2 Reply by mikhail_a 2019-07-23 08:31:02
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Ну да, может неверно названо.
У меня проблема в том, что независимо от того, установлен Excel на ПК или нет, детектирование наличия Excel средствами MVD или Delphi всегда дает положительный результат.
Т.е. Result := (CLSIDFromProgID(‘Excel.Application’, CLSID) = S_OK); всегда возвращает ОК.
А вот дальше механизм OLE не срабатывает.
Спотыкается на CreateOleObject(‘Excel.Application’);
Причем, это самое OLE не работает и для Ворда.
.
Но, проблема оказалась еще шире.
У меня есть кнопка, которая открывает файл, указанный в соотв. поле файла.
Т.е. есть такая команда: OpenFile(Form1.DBFile_1.Text);
Эта команда открывает файл документа программой, который ассоциирован с данным расширением файла.
Так вот оказывается, если у меня установлена ассоциация расширения .doc с, например, LibreOffice, то файл открывается нормально.
Но, если .doc ассоциирован с Вордом, то открытия файла не происходит.
Но и никакой ошибки не появляется.
При этом, сам Ворд и Excel работают нормально и как положено открывают файлы из проводника.
Вообще ничего не понимаю.
Может у кого есть идеи?
3 Reply by mikhail_a 2019-07-23 09:24:45
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Да, наверно, проблему можно решить чисткой реестра от офиса.
Но, я о другом — существующие в MVD (Delphi) средства работы с офисом через OLE не рекомендуются самим Microsoft.
И как доказательство обоснованности их опасений — проблемы на моем ПК.
Я сам разрабатываю программу для работы нескольких пользователей и имею возможность попытаться пофиксить на своем ПК проблемы реестра windows.
Но, если такие же проблемы будут у тех, кто будет пользоваться моей программой, то это станет неразрешимой проблемой.
Хотелось бы иметь в MVD такое решение экспорта-импорта в Excel, которое было бы независимо от OLE, если его Microsoft не рекомендует.
Сейчас же я не могу добиться того, чтобы MVD(Delphi) проверяло бы реальную работоспособность OLE механизма на конкретном ПК и если есть какие-то проблемы с этим, то хотя бы сообщало об этом, а не зависала бы на длительный срок с последующим выпаданием в исключение.
4 Reply by mikhail_a 2019-07-23 11:47:27
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Try не спасает.
На коде CreateOleObject Delphi зависает на две минуты (засекал), а потом выдает свое исключение.
Поймать его своей обработкой ошибки заключив этот код в Try не получается.
Да и ждать появления обработки в течение двух минут не лучший вариант.
5 Reply by DriveSoft 2019-07-24 10:04:07
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Почему просто не использовать отчеты для експорта данных в Excel или OpenOffice?
6 Reply by mikhail_a 2019-07-24 11:09:10
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Отчеты не получается использовать для экспорта напрямую в Excel по той же причине — они общаются с Excel через OLE.
Попытка экспорта из отчета в Excel дает ту же ошибку.
.
Однако, если делать экспорт отчета в Open Document Spreadsheet (т.е. в файл .ods) и, при этом, ассоциировать расширение ods с Excel, то после диалога сохранения файла успешно открывается Excel и в нем корректно отражены все данные.
Т.е. проблема экспорта в Excel действительно может быть решена с помощью отчетов.
.
Подскажите, пожалуйста, как передать данные с формы из таблицы в отчет без его отображения (чтобы был выбран экспорт в Open Document Spreadsheet) и сразу открылся диалог сохранения ods файла, а потом открылся Excel?
.
И есть ли еще какой-то альтернативный способ импорта данных из xls и xlsx файлов, который бы не использовал Excel?
7 Reply by DriveSoft 2019-07-25 10:44:46
- DriveSoft
- Administrator
- Offline
- Registered: 2014-02-14
- Posts: 10,294
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Подскажите, пожалуйста, как передать данные с формы из таблицы в отчет без его отображения (чтобы был выбран экспорт в Open Document Spreadsheet) и сразу открылся диалог сохранения ods файла, а потом открылся Excel?
В настройках кнопки выберитк OpenOffice (ods)
8 Reply by mikhail_a 2019-07-26 15:31:29 (edited by mikhail_a 2019-07-26 15:33:51)
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Удалось решить проблему с экспортом в Excel.
Оказывается причиной проблем был китайский WPS Office.
Это самый сильный конкурент Microsoft Office.
Видимо при инсталляции он себя где-то прописывает и в результате подменяет собой Excel.
На втором ПК у нас стоит WPS2019 и при экспорте в Excel открывается именно WPS2019.
Т.е. у WPS2019 полностью совпадает с Excel способ общения по OLE.
А у меня стоял WPS2016, который я установил после деинсталляции WPS2019 (он мне не очень понравился и я откатился на версию 2016).
Стоило мне деинсталлировать WPS2016, как сразу стал нормально работать экспорт в Excel.
Безобразие китайское.
Но, осталось наследие в отношении Ворда — не открываются файлы doc командой OpenFile, если ассоциация таких файлов связана с Word.
Никаких ошибок не выпадает. Просто ничего не происходит когда кликаешь по кнопке, которая должна открыть файл doc.
Если же ассоциировать файлы doc с LibreOffice — то они нормально открываются Либроофисом.
Есть ли у кого-нибудь идеи как заставить OpenFile открывать файлы именно Вордом?
9 Reply by mikhail_a 2019-07-29 17:16:02
- mikhail_a
- Member
- Offline
- Registered: 2017-05-30
- Posts: 253
Re: Ошибка при выполнении приложения-сервера, ProgID: «Excel.Application»
Оба предложенных варианта открытия файлов с помощью ворда работают.
Однако, файл договора может быть не только в ворде, но и в pdf или, вообще, в картинке.
Т.е. надо определять расширение файла перед открытием и либо открывать файл универсальной командой OpenFile (Filename) либо (если doc или docx) открывать командой OpenFile(Filename, ‘winword’).
Существует ли функция для определения расширения файла?
Или надо разбирать текстовое название файла, чтобы понять его расширение?
Источник
|
|||
Hrust
25.08.10 — 19:15 |
В коде программы (v7.7) используется СоздатьОбъект(«Excel.Application»). База DBF лежит на сервере, на котором не установлен Excel. |
||
Rie
1 — 25.08.10 — 19:19 |
Так а ProgID Excel.Application в HKEY_CLASSES_ROOT присутствует? |
||
reel
2 — 25.08.10 — 19:55 |
dcomcnfg |
||
Hrust 3 — 26.08.10 — 08:16 |
(1) ProgID — Excel.Application в HKEY_CLASSES_ROOT присутствует.
На решение проблемы навел dcomcnfg. P.S. Загадкой осталось — почему при запуске консоли dcomcnfg -> Службы компонентов -> Компьютеры, как только начнаю раскрывать «Компьютеры», консоль резко закрывается? |
TurboConf — расширение возможностей Конфигуратора 1С
- О программе
- Новости
- Помощь
- Документация
- Руководство
- Статьи
- Скриншоты
- Видео
- FAQ
- Форум
- Обратная связь
- Купить программу
- Вход и регистрация
Ссылка на сообщение
Копирование прямой ссылки этого сообщения, для сохранения в буфере обмена
Подтвердите действие
06 января 2011, 10:28 | |
Kamysh Зарегистрирован: 02 января 2011, 20:38 |
Не могу понять о каком пакете речь. У меня word установлен. Может нужно какое-то дополнение для зеброида поставить?
|
07 января 2011, 15:55 | |
admin Зарегистрирован: 10 апреля 2012, 00:00 |
Программа с вордом обращается через OLE сервис, это он ей говорит, что ворда на компе нету. Если он у вас установлен то: а) либо у вас портативная версия б) либо в реестре нету каких-то записей нужных для идентификации офиса в) либо глючит OLE/Винда г) еще что-то По правда говоря за столько времени это первый подобный случай. Думаю переустановки офиса должно быть достаточно. Кстати экспорт в эксель работает? |
17 января 2011, 09:49 | |
JIe0n Зарегистрирован: 07 января 2011, 19:27 |
та же ошибка, но у меня LibreOffice, очень не хотелось бы ставить от ms, планируется ли поддержка LibreOffice, OpenOffice? |
17 января 2011, 11:56 | |
admin Зарегистрирован: 10 апреля 2012, 00:00 |
Не планируется, так как эти пакеты не предоставляют такой возможности, в отличии от пакета MS. Но вы всегда можете сохранять вордовские файлы в формат HTML и импортировать их без наличия офиса на компьютере (где-то видел в интернете пакетные переобразователи) |
21 января 2011, 17:21 | |
Kamysh Зарегистрирован: 02 января 2011, 20:38 |
Версия стартер, не портативная. В эксель экспорт не работает, пишет: Недопустимая строка с указанием класса, ProgID: «Excel.Application» |
22 января 2011, 04:50 | |
admin Зарегистрирован: 10 апреля 2012, 00:00 |
На сколько мне известно Стартер — это версия оффиса в которую входят обрезанные по функционалу Эксель и Ворд. Скорее всего обрезали именно возможность взаимодействия с продуктами сторонних разработчиков. И выше описанная ошибка тому подтверждение: класса «Excel.Application» может не быть только в 2 случаях: 1. не установлен оффис 2. Установлен оффис без поддержки взаимодействия (это версии до 2000 и по видимому стартер) |
23 января 2011, 20:25 | |
bork75 Зарегистрирован: 21 сентября 2010, 01:15 |
А что мешает просто поставить Word ? Я им тоже не пользуюсь, стоит OpenOffice и microsoft office 2003, для всех файлов поставил — открывать в OpenOffice, про Word вообще забыл, живёт где-то в компе ) Такой ошибки в зебройде не выскакивает. |
24 января 2011, 15:59 | |
Kamysh Зарегистрирован: 02 января 2011, 20:38 |
Вместо стартера поставил стандарт. Теперь такое сообщение: «Сервер RPC недоступен». Win7 x64, если что. |
24 января 2011, 16:14 | |
admin Зарегистрирован: 10 апреля 2012, 00:00 |
Найдите в службах «DCOM Server Process Launcher» и запустите (если не запущен). Если не поможет — номер аськи в ЛС, завтра с вами свяжусь и будем решать. |
- Remove From My Forums
-
Question
-
Using C++ MFC I’ve always used the call
CLSIDFromProgID(L»Excel.Application», &clsid)
to get hold of the Excel application. On my old Windows 10 machine this worked. Now on a new Windows 10 machine, which also has Excel it no longer works.
I’ve found Excel.Exe on my machine, and I use Excel every work day so it should work.
Flummoxed and confused.
TIA!
http://www.ransen.com Cad and Graphics software
Answers
-
Well, solved. I copied two Excel registry branches from HKCRExcel.Application and HKCRExcel.Application.16 from the Win 10 computer which worked to the one which didn’t. Now my program accesses Excel as it should. What happened I have no idea.
http://www.ransen.com Cad and Graphics software
-
Marked as answer by
Thursday, March 28, 2019 7:05 AM
-
Marked as answer by
Delphi Rio, Win10 64 bit, Excel 2016-64 bit. I have a utility I wrote in Delphi a while back. It opens an html file, starts Excel, parses the html file, and dumps various parts into Excel. It has been working great… All of the sudden, I go to run it recently and I am now getting errors. Specifically I am getting EOleSysError — Server Execution failed, ProgID: Excel.Application. This occurs when trying to start Excel. I had not recompiled my program, it just stopped working and now gives this error. I verified that Excel can be manually started/used/stopped without issue. I verified that there are no Excel executables running in the background. I did try a full recompile on my app, no change… The only things on the system that have changed is that windows did a pretty big update, and I have installed a few additional programs (Logitech camera, etc. none that talk to Excel). I am at a loss. When I run through my code, it fails on the CreateOleObject line. Here is the routine..
// 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 is a global variable of type ExcelApplication. Among others, my USES clause contains
System.UITypes, ComObj, Office_TLB, Excel_TLB, DB,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls,...
I went and checked a totally different program which again, starts and works with Excel. I receive a similar error: EOleSysError: Server Execution failed, ClassID:{bunch of number… appears to be a GUID}. This program has not been recompiled either. Any thoughts?
Any idea what is going on?
** Additional Info. I get Error messages in the Windows Event Log when I try to run my program(s). The messages are:
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 — I found a MS Word Macro which uses CreateObject… to open Excel. This will not work either in my Computer. This leads me to believe someone my computer config is messed up. I did go into Windows update and make sure I have all updates applied.
**EDIT3 — I did both a Office Quick Repair, as well as Online/Full Repair (which downloads and appears to re-install Office. Neither changes the issue.
Форум программистов Vingrad
Модераторы: MetalFan |
Поиск: |
|
Недопустимая строка с указанием класса, ProgID: Excel.Application.11 . [ Создаю xls ] |
Опции темы |
malor |
|
||
Опытный Профиль Репутация: нет
|
Строка Запустил прогу в Win7/Office 2007 возник эксепшен: Присоединённый файл ( Кол-во скачиваний: 10 ) |
||
|
|||
pupkindeniska |
|
||
Новичок Профиль Репутация: нет
|
используй CreateOleObject(‘Excel.Application’);
|
||
|
|||
MetalFan |
|
||
Аццкий Сотона Профиль
Репутация: 3
|
Потому видимо, что 11 — это относится к 2003 офису. ——————— There are always someone smarter than you… |
||
|
|||
malor |
|
||
Опытный Профиль Репутация: нет
|
Как затем тогда файл откроется на машине на которой установлен 2003-й Офис ? |
||
|
|||
14SatanA88 |
|
||
Опытный Профиль Репутация: нет
|
откроется |
||
|
|||
malor |
|
||
Опытный Профиль Репутация: нет
|
Почему? Ведь он создаст в формате xlsx. Разве не так? |
||
|
|||
14SatanA88 |
|
||||
Опытный Профиль Репутация: нет
|
насколько я помню (сам нередко писал такие штуки), все отлично работает под 2003 и 2007 офисом что-то типа этого
|
||||
|
|||||
malor |
|
||
Опытный Профиль Репутация: нет
|
14SatanA88>>а сохранится в том формате, в котором вы сами укажете В начале я так и делал, white brother! Использовал строку: После, сохраняя файл с расширением xls (дело происходит на машине с 2003-м Офисом) и затем открывая его в Office 2007 (уже другая машина) — появлялось сообщение типа «у открываемого файла формат не соответствует содержимому». Что-то такое, да. |
||
|
|||
14SatanA88 |
|
||
Опытный Профиль Репутация: нет
|
к сожалению, сейчас не имею возможности набросать проектик, дабы проверить. а пока рекомендую погуглить и почитать статей на эту тему. |
||
|
|||
pupkindeniska |
|
||
Новичок Профиль Репутация: нет
|
malor Покажи код где создаётся твой объект офиса и начало обработки….. |
||
|
|||
14SatanA88 |
|
||||||
Опытный Профиль Репутация: нет
|
например объявление
создание
сохранение
открывает без проблем в 2003-ем и 2007-м офисах |
||||||
|
|||||||
pupkindeniska |
|
||
Новичок Профиль Репутация: нет
|
Попробуй вот так сохранять!
|
||
|
|||
|
Правила форума «Delphi: ActiveX/СОМ/CORBA» | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |