Проверка установлен или нет EXCEL - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем добрый вечер! Есть программа в которой по нажатию на одну из кнопок запускается EXCEL файл. Как сделать проверку установлен или нет на компьютер EXCEL. Если установлен, то открываем файл, если нет - выходит сообщение что EXCEL'я НЕТ!
Нашел вот такой код:
Но при установленном на моем компьютере OFFICE и EXCEL в частности, выкидывает на строчку MsgBox("На этом компьютере не установлен пакет MS Office")
Изначально был вот такой код:
Но данный код выводит сообщение о вопросе ЕСТЬ ЛИ УСТАНОВЛЕННЫЙ ОФИС. ЕСЛИ ДА, ТО ОТКРЫВАЕТ ФАЙЛ, ЕСЛИ НЕТ ТО ПРОСТО ЗАКРЫВАЕТ СООБЩЕНИЕ ВЫВОДЯ ГЛАВНУЮ ФОРМУ. Но я хочу сделать это более автоматизированно и без помощью пользователя.

Решение задачи: «Проверка установлен или нет EXCEL»

textual
Листинг программы
        Dim xlApp As Object = Nothing
 
        Try
 
            Dim xlType As Type = Type.GetTypeFromProgID("Excel.Application")
 
            If xlType Is Nothing Then
                Throw New Exception("Microsoft Excel не найден в системе")
            End If
 
            Try
                xlApp = xlType.InvokeMember(Nothing, Reflection.BindingFlags.CreateInstance, Nothing, Nothing, Nothing)
            Catch ex As Exception
                Throw New Exception("Ошибка при запуске Microsoft Excel", ex)
            End Try
 
 
            If Not IO.File.Exists(Application.StartupPath & "\Наклейки.xlsm") Then
                Throw New Exception("Файл не найден")
            End If
 
            Try
                xlApp.WorkBooks.Open(Application.StartupPath & "\Наклейки.xlsm")
            Catch ex As Exception
                Throw New Exception("Что-то пошло не так при загрузке файла", ex)
            End Try
 
            xlApp.Visible = True
 
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error) 'MessageBox.Show(ex.ToString() & CStr(If((Not ex.InnerException Is Nothing), vbNewLine & ex.InnerException.ToString(), String.Empty)), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
            If Not xlApp Is Nothing Then
                Try
                    xlApp.Quit()
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
                    xlApp = Nothing
                    GC.Collect()
                Catch
                End Try
            End If
        End Try

Оцени полезность:

14   голосов , оценка 3.929 из 5