Пользователь конечного продукта не может создать экземпляр взаимодействия Excel - PullRequest
1 голос
/ 07 ноября 2019

Я создаю приложение wpf для внутреннего развертывания.

Пользователь, использующий программное обеспечение, получает следующую ошибку при попытке создать экземпляр взаимодействия Excel.

Retrieving the COM class factory for component with CLSID (...) failed due to the following error: 80070002 The system cannot find the file specified

Секция, в которой обнаружена ошибка, выглядит следующим образом

try
{
    _excelApplication = new Microsoft.Office.Interop.Excel.Application();
    GetWindowThreadProcessId(_excelApplication.Hwnd, out ExcelAppProcessId);
    _excelApplication.ScreenUpdating = false;
}
catch(Exception e)
{
    //TODO Move message box to parents
    MessageBox.Show($"Termination Error: Could not open Excel Application: {e.Message}");

    Environment.Exit(110);
}

Ранее у того же пользователя была проблема при попытке открыть Access (не можетпомните, какая была точная ошибка), и я реализовал следующее, чтобы исправить это.

try
{
    //MessageBox.Show($"OS: {EnvironmentFunctions.is64BitOperatingSystem} Process: {EnvironmentFunctions.is64BitProcess}");

    if (EnvironmentFunctions.is64BitOperatingSystem && !EnvironmentFunctions.is64BitProcess)
    {
        string PathValue = "";
        string sAdd = "";
        string strCommonFiles =
            Environment.GetEnvironmentVariable("CommonProgramFiles(x86)");

        sAdd = ";" + strCommonFiles + "\\microsoft shared\\DAO";
        PathValue = Environment.GetEnvironmentVariable("Path");
        PathValue += sAdd;

        Environment.SetEnvironmentVariable("path", PathValue);

    }

    _accessApplication = new Microsoft.Office.Interop.Access.Application();
    GetWindowThreadProcessId(_accessApplication.hWndAccessApp(), out AccessAppProcessId);
}
catch
{
    MessageBox.Show("Termination Error: Could not open Access Application");
    Environment.Exit(110);
}

Будет ли подобное решение, кроме взаимодействия с Excel?

Примечания о пользователе: они являются одним из немногих оставшихся работающих Windows 7.

1 Ответ

1 голос
/ 07 ноября 2019

Получение фабрики классов COM для компонента с CLSID (...) не удалось из-за следующей ошибки: 80070002 Системе не удалось найти указанный файл

Обычно эта ошибка вызванатолько несколько проблем, которые я перечислю ниже.

  1. Последние обновления Windows
  2. Проблемы с разделами и / или проблемы
  3. Проблемы с битностью (определяет, какой Office установлен наконечный компьютер и то, против чего скомпилировано приложение)

Ранее я спрашивал о том, на что вы ориентируетесь, потому что у вас есть код, который проверяет, является ли компьютер 64-битным, и вы уже столкнулись с некоторыми проблемами. Это привело меня к проблемам с битрейтом при создании экземпляров Excel.

Моя рекомендация и решение для вашей точной проблемы, потому что конечный компьютер 32-битный, поэтому компиляция дляx86 / 32bit должен решить эту проблему.

В заключение, возможно, вы сможете удалить этот старый код, так как он больше не понадобится.

...