Comment savoir si adobe reader est installé sur le pc via vba

RONIBO

XLDnaute Impliqué
Bonsoir,

Je pense que j'ai tout dit dans le titre :)
J'aimerais qu'il installe le logiciel adobe seulement s'il est pas installé ! Afficher un msgbox s'il est installé !

J'utilise ce code pour lancer l'installation qui se trouve dans un bouton !

Code:
Private Sub CBInstallationAdobeReader_Click()
Dim NomFichier As String
Dim FSO As Object
    NomFichier = "Adobe Reader XI v11.0.09"
    If Dir(ThisWorkbook.Path & "\Software\Adobe Reader\" & NomFichier & ".exe") = "" Then
        MsgBox "Le fichier " & NomFichier & " n'existe pas !" & Chr(10) & Chr(10) & " Vous pouvez le télécharger à partir du lien suivant :" & Chr(10) & "http://get.adobe.com/fr/reader/", vbInformation, NomFichier & " introuvable"
    Else
        Set FSO = CreateObject("Scripting.FileSystemObject")
        FSO.copyfile ThisWorkbook.Path & "\Software\Adobe Reader\" & NomFichier & ".exe", "C:\" & NomFichier & ".exe"
        Shell "C:\" & NomFichier & ".exe", vbNormalFocus
    End If
End Sub
Merci d'avance à vous

A bientôt :)
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonjour ,

Voici un exemple en passant par la lecture de la base de registre,

le chemin lui pouvant être modifié d'un poste à un autre, cela parait un peut plus sur

bien que , suivant certain passage de version, pas non plus totalement gravé dans le marbre .

Enfin à essayer , puis adapter à ton besoin

Code:
 Sub Lecture_Registre()
  Dim Signature As String
  Dim WShell As Object
  Set WShell = CreateObject("WScript.Shell")
  Signature = "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.acrobatsecuritysettings\OpenWithList\AcroRd32.exe\"
 
 On Error Resume Next
  MsgBox "Contenu de la signature : " & WShell.RegRead(Signature)
  If Err.Number <> 0 Then MsgBox "La Signature " & Signature & " non trouvée pas dans la base de registre."
 On Error GoTo 0
End Sub
 

david84

XLDnaute Barbatruc
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonjour,
une idée en utilisant du WMI :
Code:
'https://social.technet.microsoft.com/forums/scriptcenter/en-US/135610d9-d64b-48ae-98d7-ce9b3ed620ea/get-version-of-adobe-reader
Sub Version_Adobe()
Set WMI = GetObject("winmgmts://./root/CIMV2")
Dim Collection, Item
Set Collection = WMI.ExecQuery("select Name,Version from " _
  & "Win32_Product where name like '%Adobe Reader%'")
For Each Item In Collection
  Debug.Print Item.Name & vbTab & Item.Version
Next
If Collection.Count = 0 Then _
MsgBox "Adobe Reader n'est pas installé sur votre ordinateur"
End Sub
Le problème est que le traitement prend du temps (ce qui est normal vu le traitement demandé) ...
A+
 

grisan29

XLDnaute Accro
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonjour David84
merci pour ce code mais il n'affiche pas la version une fois la recherche faite et s'il a archivé la version c'est où

Pascal
 

RONIBO

XLDnaute Impliqué
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonjour le fil,

Merci à vous deux pour vos codes,

@camarchepas :
Je viens de tester le code :
J'ai 1er le message vide, c'est à dire : Contenu de la signature :
Puis plus rien derrière, c'est normal ?
 

david84

XLDnaute Barbatruc
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonjour David84
merci pour ce code mais il n'affiche pas la version une fois la recherche faite et s'il a archivé la version c'est où

Pascal
Il suffit simplement de placer une MsgBox à la place du Debug.Print :
Code:
Sub Version_Adobe()
Set WMI = GetObject("winmgmts://./root/CIMV2")
Dim Collection, Item
Set Collection = WMI.ExecQuery("select Name from " _
  & "Win32_Product where name like '%Adobe Reader%'")
For Each Item In Collection
  MsgBox "Nom : " & Item.Name
  Exit Sub 'autant arrêter la procédure à cet endroit
Next
If Collection.Count = 0 Then _
MsgBox "Adobe Reader n'est pas installé sur votre ordinateur"
End Sub
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonjour ,

Oui c'est normal, par contre cela te dits qu'Adobe est présent mais pas la version , il faudrait analyser les autres adresses pour trouver l'info . A voir si nécessaire ...
, alors je viens de m'apercevoir que sur 64b la base n'est pas impactée de la même façon (Celle de mon exemple)
pour du 32b , l'adresse n'est pas la même
 

RONIBO

XLDnaute Impliqué
Re : Comment savoir si adobe reader est installé sur le pc via vba

Re,

En effet l'adresse est différente ! Mais il passe par "La Signature " & Signature & " non trouvée pas dans la base de registre."
Alors qu'adobe est installé !
Je comprends pas! :(
 

Staple1600

XLDnaute Barbatruc
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonsoir à tous

Adaptation/remaniement d'un code VBS glané sur le net
Code:
Sub TestAreader()
Dim FSO, WSH
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")

Location = WSH.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AcroRd32.exe\")

If Not IsNull(FSO.GetFileVersion(Location)) Then
MsgBox "Acrobat Reader - version: " & FSO.GetFileVersion(Location) & " est installé sur ce PC.", vbInformation, "Test présence Adobe Reader"
Else
MsgBox "Acrobat Reader n'est pas installé", vbCritical
End If
End Sub
Test OK sur W764bits + XL2013 32 bits
 

camarchepas

XLDnaute Barbatruc
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonsoir ,

N'est pas Staple Qui veut , Bravo ,

Fonctionne aussi avec Excel 2010 W7

Il est vraiment Phénoménal ......
 

RONIBO

XLDnaute Impliqué
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonjour le fil,


staple1600 merci pour le code qui fonctionne plutôt bien, j'aimerai cependant l'améliorer
Si adobe présent sur le pc afficher le message box (adobe déjà installé) et mettre fin au macro en utilisant exit sub (je crois)
S´il est pas installé lancer le code que j'ai poster dans mon 1er message.
Est ce que c´est possible à réaliser?

A+
 

Staple1600

XLDnaute Barbatruc
Re : Comment savoir si adobe reader est installé sur le pc via vba

Bonsoir à tous

RONIBO
Où est la difficulté ??
Ton code est basé sur un If Else End If comme le mien il suffit donc de tout simplement mixé les deux codes...

Une petite remarque cependant
Si le PC n'est pas le tien, de quel droit t'autorises-tu à installer un logiciel sur le PC ?
Un simple message indiquant qu'il faut installer Acrobat Reader (en mettant l'URL du site) serait moins abrupte, non ?
Surtout si sur le PC, c'est, par exemple et au hasard, Sumatra PDF, le lecteur PDF par défaut ;)
 

Discussions similaires


Haut Bas