OVH Cloud OVH Cloud

Références VBAProject

1 réponse
Avatar
EliotNaiss
BJR,
je désire livrer une appli sous XL2000, qui nécessite des références VBA
particulières.Quand je copie le classeur sur une machine, souvent il manque
le lien avec ces références !
Elles sont paramétrées dans l'appli. Est-ce que seulement en copiant les dll
ou ocx dans les dossiers cela suffit ou bien l'activation de ces références
est liée à XL lui-même ???
Merci
Eliot

1 réponse

Avatar
michdenis
Bonjour Éliot,

Ta question n'est pas claire ...

A ) si tu veux ajouter une référence à un projet qui fait déjà parti du système d'exploitatiion

(Ici on ajoute une référence à Access 2000)
ThisWorkbook.VBProject.References.AddFromFile("C:Program FilesMicrosoft
OfficeOfficeMSCACC9.OLB")


B ) Si tu veux tester la présence d'une Dll ou Ocx sur un autre ordinateur et installer le fichier si il est manquant,
essaie ceci :
Tu n'auras qu'à renseigner la Const "Ref" dans ce module avec le nom du fichier dll que tu veux installer

P.S. Cette procédure, je ne l'ai pas vraiment testé ... si il y a problème revient ...!

Dans le ThisWorkbook du classeur , copie ceci :

'-------------------
Private Sub Workbook_Open()
'à l'ouverture du classeur, lancement de
'la procédure d'installation du fichier

OuverturePremièrefois

End Sub
'-------------------

Dans un module standard de ton projet : Ceci

'Déclaration Api dans le haut du module
Private Declare Function GetSystemDirectory Lib "kernel32.dll" Alias _
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

'Cette constante représente le fichier que tu veux copier
'à adapter selon le fichier à copier
Const Ref As String = "Gif89.dll"

'--------------------------------------
Sub OuverturePremièrefois()

Dim ChFile As String

'Vérifie si la présence du fichier dans le
'répertoire système du nouvel ordinateur
ChFile = CheminSystem & ""
If Dir(ChFile & Ref) = "" Then
'Vérifie la présence de la dll
'dans le répertoire source de ce fichier.
If Dir(ThisWorkbook.Path & "" & Ref) = "" Then
MsgBox "Le fichier à installer est absent." & _
" Placer ce fichier " & Ref & " dans le ce " & _
"répertoire : " & ThisWorkbook.Path
'Si fichier(dll) n'est pas dans le répertoire
'de ce classeur, fin de la procédure.
Exit Sub
End If
'si le fichier n'existe pas, copie du fichier
CopierUnFichier ChFile 'Procédure
InitialerBaseDeRegistre 'Procédure
End If

On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile _
ThisWorkbook.Path & "" & Ref

End Sub
'--------------------------------------
Sub CopierUnFichier(Destination As String)

'copie du fichier dans le répertoire système
FileCopy ThisWorkbook.Path & "" & Ref, Destination

End Sub
'--------------------------------------
Sub InitialerBaseDeRegistre()

Dim Comp As Object, NoLigne As Integer
Dim Comp As Object
Set Comp = ThisWorkbook.VBProject.VBComponents("Module1")

'Initialise la base de régistre
Shell "command.com /c regsvr32.exe c:windowssystem" & Ref

'Supprimer le module1 en entier
ThisWorkbook.VBProject.VBComponents.Remove Comp
'Libère l'espace mémoire
Set Comp = Nothing
End Sub
'--------------------------------------
Function CheminSystem()
Dim RetVal As Long
Dim SysDir As String

SysDir = Space$(256)
RetVal = GetSystemDirectory(SysDir, Len(SysDir))

If RetVal <> 0 Then
CheminSystem = Left$(SysDir, RetVal)
End If
End Function
'--------------------------------------


Salutations!




"EliotNaiss" a écrit dans le message de news:
BJR,
je désire livrer une appli sous XL2000, qui nécessite des références VBA
particulières.Quand je copie le classeur sur une machine, souvent il manque
le lien avec ces références !
Elles sont paramétrées dans l'appli. Est-ce que seulement en copiant les dll
ou ocx dans les dossiers cela suffit ou bien l'activation de ces références
est liée à XL lui-même ???
Merci
Eliot