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

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

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

Всем добрый вечер! Есть программа в которой по нажатию на одну из кнопок запускается EXCEL файл. Как сделать проверку установлен или нет на компьютер EXCEL. Если установлен, то открываем файл, если нет - выходит сообщение что EXCEL'я НЕТ!
Нашел вот такой код:
Листинг программы
  1. Dim xlApp As Object
  2. Try
  3. xlApp = CreateObject("Excel.Application")
  4. Process.Start(Application.StartupPath & "\Наклейки.xlsm")
  5. Catch ex As SystemException
  6. MsgBox("На этом компьютере не установлен пакет MS Office")
  7. End Try
Но при установленном на моем компьютере OFFICE и EXCEL в частности, выкидывает на строчку MsgBox("На этом компьютере не установлен пакет MS Office")
Изначально был вот такой код:
Листинг программы
  1. Dim msg As String
  2. Dim title As String
  3. Dim style As MsgBoxStyle
  4. Dim response As MsgBoxResult
  5. msg = "Для запуска Наклеек нужен установленный пакет MS Office. Пакет MS Office установлен?"
  6. style = MsgBoxStyle.DefaultButton2 Or _
  7. MsgBoxStyle.Information Or MsgBoxStyle.YesNo
  8. title = "Предупреждение"
  9. response = MsgBox(msg, style, title)
  10. If response = MsgBoxResult.Yes Then
  11. Process.Start(Application.StartupPath & "\Наклейки.xlsm")
  12. Me.Close()
  13. Else
  14. Me.Show()
  15. End If
Но данный код выводит сообщение о вопросе ЕСТЬ ЛИ УСТАНОВЛЕННЫЙ ОФИС. ЕСЛИ ДА, ТО ОТКРЫВАЕТ ФАЙЛ, ЕСЛИ НЕТ ТО ПРОСТО ЗАКРЫВАЕТ СООБЩЕНИЕ ВЫВОДЯ ГЛАВНУЮ ФОРМУ. Но я хочу сделать это более автоматизированно и без помощью пользователя.

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

textual
Листинг программы
  1.         Dim xlApp As Object = Nothing
  2.  
  3.         Try
  4.  
  5.             Dim xlType As Type = Type.GetTypeFromProgID("Excel.Application")
  6.  
  7.             If xlType Is Nothing Then
  8.                 Throw New Exception("Microsoft Excel не найден в системе")
  9.             End If
  10.  
  11.             Try
  12.                 xlApp = xlType.InvokeMember(Nothing, Reflection.BindingFlags.CreateInstance, Nothing, Nothing, Nothing)
  13.             Catch ex As Exception
  14.                 Throw New Exception("Ошибка при запуске Microsoft Excel", ex)
  15.             End Try
  16.  
  17.  
  18.             If Not IO.File.Exists(Application.StartupPath & "\Наклейки.xlsm") Then
  19.                 Throw New Exception("Файл не найден")
  20.             End If
  21.  
  22.             Try
  23.                 xlApp.WorkBooks.Open(Application.StartupPath & "\Наклейки.xlsm")
  24.             Catch ex As Exception
  25.                 Throw New Exception("Что-то пошло не так при загрузке файла", ex)
  26.             End Try
  27.  
  28.             xlApp.Visible = True
  29.  
  30.         Catch ex As Exception
  31.             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)
  32.             If Not xlApp Is Nothing Then
  33.                 Try
  34.                     xlApp.Quit()
  35.                     System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
  36.                     xlApp = Nothing
  37.                     GC.Collect()
  38.                 Catch
  39.                 End Try
  40.             End If
  41.         End Try

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут