Excel vba - aggiungere riferimenti

Anonimo
2016-10-24T08:49:34+00:00

Ciao

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 ??

grazie e saluti

domenico

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-10-24T09:42:52+00:00

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:

**http://answers.microsoft.com/it-it/msoffice/forum/msoffice\_excel-mso\_win10/copiare-collection-in-range/1fe399e1-165e-4180-b8f4-43c62b0011ca**

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-10-25T12:24:38+00:00

    Ciao Domenico,

    approfitto per chiedere dove posso trovare l'elenco dei (credo si chiamino "com object") relativi ai vari riferimenti,  di "CreateObject", per esempio:

    per "Microsoft Internet Control" uso: CreateObject("InternetExplorer.Application")

    per "Microsoft Windows Common Control 6" ???

    ecc..ecc

    Inoltre, in una userform con treeview, tale riferimento come e dove va collocato?

    Per esempio, ho una:

    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)

    che, senza il riferimento a "Micr.Win. Comm. Contr. 6" segnala errore.

    EDIT: cioè, "CreateObject("????") va inserito nell'initialize della uForm?

    Forse non lo sai, ma credo che con questo post tu stia aprendo il vaso di Pandora (a whole new can of worms, come si direbbe a noi)!  :-)

    Pertanto penso sia opportuno aprire un nuovo thread in materia.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-10-25T07:34:34+00:00

    Ciao

    approfitto per chiedere dove posso trovare l'elenco dei (credo si chiamino "com object") relativi ai vari riferimenti,  di "CreateObject", per esempio:

    per "Microsoft Internet Control" uso: CreateObject("InternetExplorer.Application")

    per "Microsoft Windows Common Control 6" ???

    ecc..ecc

    Inoltre, in una userform con treeview, tale riferimento come e dove va collocato?

    Per esempio, ho una:

    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)

    che, senza il riferimento a "Micr.Win. Comm. Contr. 6" segnala errore.

    EDIT: cioè, "CreateObject("????") va inserito nell'initialize della uForm?

    grazie come sempre

    saluti

    domenico

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-10-24T11:10:12+00:00

    Ciao Norman e grazie

    ...e dire che lo sapevo che bisognava utilizzare il late binding....che testa!!

    cari saluti

    domenico

    La risposta è stata utile?

    0 commenti Nessun commento