Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22

Проверка установлен или нет EXCEL

17.12.2016, 17:46. Показов 1936. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый вечер! Есть программа в которой по нажатию на одну из кнопок запускается EXCEL файл. Как сделать проверку установлен или нет на компьютер EXCEL. Если установлен, то открываем файл, если нет - выходит сообщение что EXCEL'я НЕТ!

Добавлено через 5 минут
Нашел вот такой код:
VB.NET
1
2
3
4
5
6
7
8
Dim xlApp As Object
        Try
            xlApp = CreateObject("Excel.Application")
            Process.Start(Application.StartupPath & "\Наклейки.xlsm")
        Catch ex As SystemException
            MsgBox("На этом компьютере не установлен пакет MS Office")
 
        End Try
Но при установленном на моем компьютере OFFICE и EXCEL в частности, выкидывает на строчку
MsgBox("На этом компьютере не установлен пакет MS Office")

Добавлено через 7 минут
Изначально был вот такой код:


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

Но я хочу сделать это более автоматизированно и без помощью пользователя.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.12.2016, 17:46
Ответы с готовыми решениями:

Проверка портов - открыты или нет
Как программно сделать проверку портов? Допустим в текстбоксе пишешь порт нажимаешь на кнопку он этот порт проверяет и если он открыт в...

NSIS.Проверка установлен ли .net
сделал инсталятор к программе nsis.как проверить установлен ли .net,если нет,то запустить файл(установщик .net) в папке с моим...

Проверить, установлен ли Excel на ПК
Добавил к проекту через Resources экселевский документ, необходимо теперь при нажатии кнопки в приложении проверить установлен ли на...

16
4708 / 3661 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
17.12.2016, 20:31
VB777,
Для начала нужно немножко покрутить головой и посмотреть вокруг, например https://www.cyberforum.ru/post1368990.html
Для вашего примера: возможно что прерывание не связано с отсутствием Excel, а причина как раз в строке Process.Start(Application.StartupPath & "\Наклейки.xlsm"). Для проверки попробуйте заменить эту строку на что-то типа MsgBox("Excel++").
1
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 13:04  [ТС]
Немного изменил:

VB.NET
1
2
3
4
5
6
7
8
Dim xlApp As Object
        Try
            xlApp = CreateObject("Excel.Application")
            Process.Start("\Наклейки.xlsm")
        Catch ex As SystemException
            MsgBox("На этом компьютере не установлен пакет MS Office")
 
        End Try
Сейчас все запускает. Но как проверить будет ли выскакивать сообщение MsgBox("На этом компьютере не установлен пакет MS Office"), если офис не установлен?

Добавлено через 5 часов 8 минут
Попробовал запустить программу с другого компьютера где установлен офис. Не запускает. Хотя на компе на котором создал прогу все идет. ЧУДЕСА)))
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
18.12.2016, 14:30
Лучший ответ Сообщение было отмечено VB777 как решение

Решение

Цитата Сообщение от VB777 Посмотреть сообщение
Process.Start("\Наклейки.xlsm")
Не самый ахти способ. Возможно в системе по умолчанию на запуск таких файлов стоит какое-нибудь другое приложение.

Вот вам пример с перехватом ошибок, что бы наверняка вычислить ошибку

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
        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.ToString() & CStr(IIf(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
2
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 14:36  [ТС]
Sklifosofsky спасибо! Щас буду экспериментировать! Позже дам знать как работает.

Добавлено через 2 минуты
Ругается на эту строчку
VB.NET
1
          MessageBox.Show(ex.ToString() & CStr(IIf(Not ex.InnerException Is Nothing, vbNewLine & ex.InnerException.ToString(), String.Empty)), "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
Необработанное исключение типа "System.NullReferenceException"
0
1548 / 1521 / 325
Регистрация: 03.10.2012
Сообщений: 1,551
18.12.2016, 14:36
Цитата Сообщение от VB777 Посмотреть сообщение
Попробовал запустить программу с другого компьютера где установлен офис. Не запускает
1. А файл Наклейки.xlsm на нем есть?
2. Не советую использовать относительные пути к файлам, т.к. в результате действий программы или пользователя текущий каталог в системе может отличаться от каталога
из которого запущена программа
0
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 14:40  [ТС]
Файл с .EXE'шником естественно вместе. Мне и нужно чтобы при переносе разные компьютеры вся программа работала. Поэтому я файл экселя с .EXE'шником держу в одной папке.
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
18.12.2016, 15:28
Лучший ответ Сообщение было отмечено VB777 как решение

Решение

Перепутал конструкции iif и if
Вместо iif вставьте if
1
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 15:50  [ТС]
Sklifosofsky все работает! Я проверил, как будет реагировать без файла. Выходит ошибка как и положено, но там текст который я считаю не нужный. Вот текст сообщения:
System.Exception: Файл не найден
в Windows.Application1.Form1.Button1_Click (Object sender, EventArgs e)

Возможно сделать так чтобы текст был только Файл не найден и все!
0
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 16:06  [ТС]
А когда Excel не установлен, то выскакивает вот такая портянка)))
Миниатюры
Проверка установлен или нет EXCEL  
0
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 16:10  [ТС]
А вот ошибка когда файла нет!
Миниатюры
Проверка установлен или нет EXCEL  
0
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 16:22  [ТС]
Вот сообщение когда Офиса нет! А предыдущая "портянка" выскочила когда я запустил приложение свое во время удаления Офиса!
Миниатюры
Проверка установлен или нет EXCEL  
0
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 16:24  [ТС]
Но вопрос остается тот же! Можно ли убрать лишний текст из сообщений? Для того чтобы для пользователя красиво выглядела ошибка!
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
18.12.2016, 16:25
Лучший ответ Сообщение было отмечено VB777 как решение

Решение

Можно ограничиться только сообщением
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
        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
Цитата Сообщение от VB777 Посмотреть сообщение
А когда Excel не установлен, то выскакивает вот такая портянка)))
Странное исключение. Excel есть, но он не запускается должным образом (Возможно он раньше в системе был)
1
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 16:32  [ТС]
А что заставляет выводить вот это сообщение?:
"Что-то пошло не так при загрузке файла"
0
 Аватар для Sklifosofsky
1086 / 916 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
18.12.2016, 16:37
VB777, вдруг вместо екселевского файла что-то другое подсунут или неизвестная ошибка. Придумайте другую формулировку ошибки
1
0 / 0 / 0
Регистрация: 22.10.2016
Сообщений: 22
18.12.2016, 16:40  [ТС]
Sklifosofsky огромное Вам спасибо!!! Вы очень мне помогли!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.12.2016, 16:40
Помогаю со студенческими работами здесь

Как узнать - пустая ячейка или нет на листе Excel
если ячейка В2 пустая записываю данные в нее если не пустая то переход на В3 и так далее до В25

Определить, установлен ли Excel в системе
Доброго дня! Подскажите, пожалуйста, возможно ли средствами Visual Basic .NET определить установлен ли в системе Excel или Word, в...

Будет ли программа работать с Excel в системе, где не установлен MS Office
Доброго времени суток! Я пишу программу в которой время от времени происходит "общение" с файлами Excel. Соответственно для...

Как можно работать с книгой Excel, если не установлен MS Office?
Как реализовать работу с книгой Excel на компе где нет екселя? Есть программа которая работает с книгой, берет из нее данные обрабатывает...

Брак или нет и проверка
1)купил в интернете HDD после установки в сист блок только с 5 попытки удалось форматнуть а после проверки программой victoria обнаружил 3...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru