Rambler's Top100
Навигация
Главная
MS ACCESS
VB
ASP
PHP
Наши друзья
Поиск
Форум
Лента новостей
Новый сайт

Online
Рассылки Subscribe.Ru
Работа с MS Access
Подписаться письмом
Реклама на сайте
 
Главная arrow MS ACCESS arrow Проверить, установлено ли приложение Excel, Word, Outlook …
Проверить, установлено ли приложение Excel, Word, Outlook … Печать E-mail
Автор Daniel Pineault   
26.04.2023 г.
Зачем это надо.
При автоматизации работы Access, когда используются другие приложения из пакета MS Office, необходимо знать, установлены ли данные приложения на компьютере. Сейчас существуют много аналогов пакета MS Office, в том числе и бесплатных. Они уступают по функционалу, но имеют меньшие размеры, быстрее работают на слабых компьютерах и совместимы на уровне выходных файлов. Так, что у пользователя на компьютере может и не быть приложений MS Office. Как можно определить, установлен ли на компьютере Excel?
Один из вариантов - попытаться использовать CreateObject() и перехватить ошибку 429, например:
Function IsInstalled() As Boolean
On Error GoTo Error_Handler
Dim oApp As Object

Set oApp = CreateObject("Word.Application")
' Очистить, закрыть, ...
IsInstalled = True

Error_Handler_Exit:
On Error Resume Next
If Not oApp Is Nothing Then Set oApp = Nothing
Exit Function

Error_Handler:
If Err.Number <> 429 Then 'Компонент ActiveX не может создать объект, поэтому не установлен
MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: IsInstalled" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occured!"
End If
Resume Error_Handler_Exit
End Function

Можно просто заменить Excel любой другой программой: Word, InfoPath,…
Но можно сделать и по-другому. Можно проверить путь установки нужной программы.
' примеры использования 
'IsAppInstalled("msaccess.exe")
'IsAppInstalled("excel.exe")
'IsAppInstalled("infopath.exe")
'IsAppInstalled("outlook.exe")
'IsAppInstalled("powerpnt.exe")
'IsAppInstalled("winword.exe")
Function IsAppInstalled(sApp As String) As Boolean
On Error GoTo Error_Handler
If Len(CreateObject("WScript.Shell").RegRead("HKEY_LOCAL_MACHINE\” _
& “SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" _
& sApp & "\")) > 0 Then IsAppInstalled = True

Error_Handler_Exit:
On Error Resume Next
Exit Function

Error_Handler:
If Err.Number <> -2147024894 Then ‘Неверный корень в реестра, не установлен!
MsgBox "The following error has occured" & vbCrLf & vbCrLf & _
"Error Number: " & Err.Number & vbCrLf & _
"Error Source: IsAppInstalled" & vbCrLf & _
"Error Description: " & Err.Description & _
Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
, vbOKOnly + vbCritical, "An Error has Occured!"
Debug.Print Err.Number, Err.Description
End If
Resume Error_Handler_Exit
End Function


Таким образом, с помощью одной строчки кода вы можете легко определить, установлена ли программа.

Используемые материалы

 

 Determine if an Application is Installed


Просмотров: 698

  Ваш коментарий будет первым

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code

 
Реклама на сайте
HiProg.com - Технологии программирования
Rambler's Top100 TopList