Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Domenico,
avrei necessità di distribuire un lavoro che prevede l'attivazione di alcuni riferimenti che non so se siano o meno già presenti e/o attivati nel computer dove il lavoro verrà eseguito.
Se, per esempio se ho necessità di attivare: "Microsoft VBScript Regular Expressions 5.5", uso la seguente routine:
Sub InsertReference
Dim VBAEditor As VBIDE.VBE
Dim vbProj As VBIDE.VBProject
Dim chkRef As VBIDE.Reference
Dim BoolExists As Boolean
Set VBAEditor = Application.VBE
Set vbProj = ActiveWorkbook.VBProject
For Each chkRef In vbProj.References
If chkRef.Name = "VBScript_RegExp_55" Then exit Sub
Next
vbProj.References.AddFromFile "C:\WINDOWS\system32\vbscript.dll\3"
Set vbProj = Nothing
Set VBAEditor = Nothing
End Sub
Ora il problema è che per eseguire tale routine, è necessario attivare il riferimento a : VBIDE che (probabilmente) non è attivo nel computer di destinazione.
Come fare ??
Per distribuire un'applicazione, invece di utilizzare il cosiddetto early-binding, il quale richiede un riferimento alla library di interesse, utilizza il cosiddetto Late Binding. Ad esempio, nel caso della Library Microsoft VBScript Regular Expressions 5.5, anziché, ad esempio,
'=========>>
Public Sub Tester()
Dim RE As RegExp
Set RE = New RegExp
'\ tuo codice
End Sub
'<<=========
prova qualcosa del genere:
'=========>>
Public Sub Tester2()
Dim oRE As Object
Set oRE = CreateObject("VBScript.RegExp")
'\tuo codice
End Sub
'<<=========
Per un analogo esempio dell'uso del late binding, vedi il mio codice nel uno dei tuoi thread:
===
Regards,
Norman