Verificando se um aplicativo Office esta instalado
Pode parecer uma coisa inútil , mas um dia ( um belo dia ) você vai precisar saber se um aplicativo office ( Word , Excel , Access ,...) está instalado na máquina do cliente. "Para que eu vou querer saber isso ???" você pode estar se perguntando. Ora , se você for usar automação OLE ( diga-se VBA ) , para usar o Word como um processador de texto ou o Excel como uma planilha de cálculos eles deverão estar instalados no seu cliente e você vai precisar saber...
Bem , deixando a polêmica de lado vamos mostrar como saber se os aplicativos office estão instalados ou não. Para isto iremos usar umas API´s e pronto:
Private Declare Function RegOpenKey Lib
"advapi32" Alias "RegOpenKeyA" (ByVal hKey _ As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, lpReserved As Long, lptype As _ Long, lpData As Any, lpcbData As Long) As Long Private Declare Function RegCloseKey& Lib "advapi32" (ByVal hKey&) Private Const REG_SZ = 1 Private Const REG_EXPAND_SZ = 2 Private Const ERROR_SUCCESS = 0 |
Insira o código abaixo no formulário:
Public Function GetRegString(hKey As
Long,strSubKey As String, strValueName As String) As String Dim strSetting As String Dim lngDataLen As Long Dim lngRes As Long If RegOpenKey(hKey, strSubKey, lngRes) = ERROR_SUCCESS Then strSetting = Space(255) lngDataLen = Len(strSetting) If RegQueryValueEx(lngRes, strValueName, ByVal 0,REG_EXPAND_SZ, ByVal strSetting, lngDataLen) = ERROR_SUCCESS Then If lngDataLen > 1 Then GetRegString = Left(strSetting, lngDataLen - 1) End If End If If RegCloseKey(lngRes) <> ERROR_SUCCESS Then MsgBox "RegCloseKey Failed: " & strSubKey, vbCritical End If End If Public Function IsAppPresent(strSubKey$,
strValueName$) As Boolean |
E no evento click do botão de comando ( command1 ) insira o código abaixo:
Private Sub command1_Click() Dim mensagem As String Label1 = "Access " & _ IIf(IsAppPresent("Access.Database\CurVer", ""), "Instalado", "Não instalado") Label2.Caption = "Excel " & _ IIf(IsAppPresent("Excel.Sheet\CurVer", ""), "Instalado", "Não instalado") Label3.Caption = "PowerPoint " & _ IIf(IsAppPresent("PowerPoint.Slide\CurVer", ""), "Instalado", "Não instalado") Label4.Caption = "Word " & _ IIf(IsAppPresent("Word.Document\CurVer", ""), "Instalado", "Não instalado") End Sub |
Execute o aplicativo e clique no botão de comando: No meu caso o resultado é:
Sem mais nada a declarar...(Aguarde ,em breve vamos dar um curso sobre VBA - básico)