Проверка установлен или нет 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