Tester microsoft scripting runtime

Bonjour,

je souhaite dans l'ordre en VBA :

tester si Microsoft scripting runtime est activé

si oui : rien

si non : tester si scrrun.dll est présent en "C:\Windows\System32\scrrun.dll"

si non : rien

si oui activer : ThisWorkbook.VBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"

Merci par avance

Merci de m'aider car ke bloque totalement sur l'écriture et les tests des 2 conditionnelles.

Bonsoir

Dans mes archives

'vérifier la présence d'une référence, l'ajouter si absente
'(ici une référence au Microsoft Scripting Runtime, ie FileSystemObject)

Sub TestRef()
    MsgBox CheckScriptingRef
End Sub

'Patrick Molloy, mpep
Private Function CheckScriptingRef() As String
   Dim x As Object
   Dim msg As String
   Set x = ThisWorkbook.VBProject.References
   On Error Resume Next
   x.Addfromfile "C:\WINDOWS\System32\scrrun.dll"
   If Err.Number <> 0 Then
         If Err.Number = 32813 Then
            msg = "Already Referenced"
         Else
            msg = Err.Number & vbCrLf & Error
         End If
         Err.Clear
   Else
       msg = "Reference Added"
   End If
  CheckScriptingRef = msg
End Function

Chez moi le scrrun.dll est dans "C:\WINDOWS\SysWoW64\"

Je regarde cela demain, par contre je ne comprends pas pourquoi

On Error Resume Next

est nécessaire ?

Err.Number <> 0

que signifie ce code ?

32813 

comment as-tu put récupérer ce chiffre ? (qui doit correspondre à "microsoft scripting runtime" ?

Merci

Hello,

Si tu essaie d'activer une référence qui est déjà active, tu as droit à un message d'erreur, mais tu peux aussi avoir un message d'erreur pour une autre raison, donc oui le

On Error Resume Next

est recommancé

Err.Number <> 0

Teste si on a eu une erreur. Si on a eu une erreur, Err.Number <> 0

32813

ça c'est plus du débeugage. En gros l'erreur : Référence déja activée génère le code d'erreur 32813. ça n'a rien à voir avec "l'identifiant" du "Runtime"

En gros si je comprends, tu donne une instruction et selon le résultat s'il y a des erreurs tu les analyse et agit en conséquence, c'est bien l'idée générale ?

Par contre serait-il possible d'avoir quelques précisions sur cette macro svp ?


c'est ingénieux

Private Function CheckScriptingRef() As String
   Dim x As Object
   Dim msg As String
   Set x = ThisWorkbook.VBProject.References
   On Error Resume Next
   x.Addfromfile "C:\WINDOWS\System32\scrrun.dll"
   'Possibilité 1 : La référence n'était pas active -> La référence est activée normalement. Err.Number = 0 ->On affiche "Reference Added"
   'Possiblité 2: La référence existe déjà, on a donc une erreur générée, code 32813 -> On affiche "Already Referenced"
   'Possibilité 3: Une autre erreur est survenue, on affiche le numéro de l'erreur, et son texte.
   If Err.Number <> 0 Then
         If Err.Number = 32813 Then
            msg = "Already Referenced"
         Else
            msg = Err.Number & vbCrLf & Error
         End If
         Err.Clear
   Else
       msg = "Reference Added"
   End If
  CheckScriptingRef = msg
End Function
 

Bonjour,

Merci beaucoup

Rechercher des sujets similaires à "tester microsoft scripting runtime"