Excel - Utilizzo riferimento

Asked By Marco Porzio on 14-Jun-12 08:51 AM
Ciao a tutti,

in Excel 2007 ho la necessit=E0 di utilizzare ADODB pertanto devo inserire =
il riferimento Microsoft ActiveX Data object libraty.

il problema =E8 che voglio inserire questo riferimento da VBA e non da Stru=
menti\Riferimenti presente nel menu di VB editor.
Per es, metto un pulsante che su click carica il riferimento poi esegue il =
codice con ADODB

come faccio?
grazie
Marco


Bruno Campanini replied to Marco Porzio on 14-Jun-12 11:56 AM
Marco Porzio was thinking very hard :

Dim Ref as Reference
Set Ref = References.AddFromFile("C:\Program Files\Common
Files\System\ado\msado15.dll")

Tale ? il Path del file in Windows 7 / 64bit

Bruno
Marco Porzio replied to Bruno Campanini on 14-Jun-12 02:43 PM
Il giorno gioved=EC 14 giugno 2012 17:56:03 UTC+2, Bruno Campanini ha scrit=
to:
ire il=20
=20
=20
ODB

Grazie 1000
domani mattina lo provo
Marco
Marco Porzio replied to Bruno Campanini on 15-Jun-12 02:26 AM
Il giorno gioved=EC 14 giugno 2012 17:56:03 UTC+2, Bruno Campanini ha scrit=
to:
inserire il=20
on da=20
=20
ODB

Purtroppo mi da un errore

in Dim Ref As Reference
mi dice "tipo definito dall'utente non definito"

se scrivo il codice infatti dopo As non ho la voce Reference
Mauro Gamberini replied to Marco Porzio on 15-Jun-12 04:41 AM
Se(se) ho capito:

http://it.toolbox.com/wiki/index.php/Add_references_programmatically_with_VB_or_VBA

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
Ciao a tutti,

in Excel 2007 ho la necessità di utilizzare ADODB pertanto devo inserire il
riferimento Microsoft ActiveX Data object libraty.

il problema è che voglio inserire questo riferimento da VBA e non da
Strumenti\Riferimenti presente nel menu di VB editor.
Per es, metto un pulsante che su click carica il riferimento poi esegue il
codice con ADODB

come faccio?
grazie
Marco
Marco Porzio replied to Mauro Gamberini on 15-Jun-12 05:20 AM
Credo di aver risolto adesso!
Utilizzo questo codice :

Function JR_TestSolverReference() As Boolean

Dim obj
For Each obj In ThisWorkbook.VBProject.References
If UCase(obj.Name) = "SOLVER.XLS" Then
JR_TestSolverReference = True
Else
JR_TestSolverReference = False
Exit For
End If
Next obj

Exit Function
End Function

Sub JR_LoadSloverReference()

If JR_TestSolverReference = False Then _
ThisWorkbook.VBProject.References.AddFromFile ("Percorso\msado15.dll")
Exit Sub
End Sub


Sub RifActiveX ()

Call JR_LoadSloverReference

End Sub

Mi basta chiamare RifActiveX ed importa la dll.
Dalle prove che ho fatto sembra funzionare, salvo comunque quanto descritto nel tuo link per utilizzi futuri..
grazie
Marco Porzio replied to Mauro Gamberini on 15-Jun-12 05:12 AM
Il giorno venerd=EC 15 giugno 2012 10:41:59 UTC+2, Mauro Gamberini ha scrit=
to:
_VB_or_VBA
e il=20
l=20

Credo di aver risolto adesso!
Ho trovato questo codice :

Function JR_TestSolverReference() As Boolean
'------------------------------------------------------------------
'Procedure Name: JR_TestSolverReference
'Date & Time   : Date: Wed Wednesday August 2005 & Time: 01:38
'Code Author   : Writtn by: Jack in the UK
'Our Web Site  : [url]www.excel-it.com[/url]
'Purpose       : [url]www.OzGrid.com[/url] - Forum Post
'Post Link     : [url]http://www.ozgrid.com/forum/showthre...ight=3Dre=
ference[/url]
'Comments      : Test For Solver
'-------------------------------------------------------------------
Dim obj
For Each obj In ThisWorkbook.VBProject.References
If UCase(obj.Name) =3D "SOLVER.XLS" Then
JR_TestSolverReference =3D True
Else
JR_TestSolverReference =3D False
Exit For
End If
Next obj
=20
Exit Function
End Function

Sub JR_LoadSloverReference()
'------------------------------------------------------------------
'Procedure Name: JR_LoadSloverReference
'Date & Time   : Date: Wed Wednesday August 2005 & Time: 01:39
'Code Author   : Writtn by: Jack in the UK
'Our Web Site  : [url]www.excel-it.com[/url]
'Purpose       : [url]www.OzGrid.com[/url] - Forum Post
'Post Link     : [url]http://www.ozgrid.com/forum/showthre...ight=3Dre=
ference[/url]
'Comments      : Load Solver Reference
'-------------------------------------------------------------------
If JR_TestSolverReference =3D False Then _
ThisWorkbook.VBProject.References.AddFromFile ("\\mkpdatam\Applicazioni=
\App VB 2005\AggGranulometri\File esterni\msado15.dll")
Exit Sub
End Sub

Sub RifActiveX ()

Call JR_LoadSloverReference

End Sub

Richiamo poi RifActiveX e sembra funzionare!
salvo comunque quanto messo nel tuo link che pu=F2 essermi utile per usi fu=
turi
grazie
Marco Porzio replied to Mauro Gamberini on 15-Jun-12 05:18 AM
Il giorno venerd=EC 15 giugno 2012 10:41:59 UTC+2, Mauro Gamberini ha scrit=
to:
_VB_or_VBA
e il=20
l=20

Credo di aver risolto adesso!
Utilizzo questo codice :

Function JR_TestSolverReference() As Boolean

Dim obj
For Each obj In ThisWorkbook.VBProject.References
If UCase(obj.Name) =3D "SOLVER.XLS" Then
JR_TestSolverReference =3D True
Else
JR_TestSolverReference =3D False
Exit For
End If
Next obj
=20
Exit Function
End Function

Sub JR_LoadSloverReference()
=20
If JR_TestSolverReference =3D False Then _
ThisWorkbook.VBProject.References.AddFromFile ("Percorso\msado15.dll")
Exit Sub
End Sub


Sub RifActiveX ()

Call JR_LoadSloverReference

End Sub

Mi basta chiamare RifActiveX ed importa la dll.
Dalle prove che ho fatto sembra funzionare, salvo comunque quanto descritto=
nel tuo link per utilizzi futuri..
grazie
Bruno Campanini replied to Marco Porzio on 15-Jun-12 06:43 PM
Marco Porzio presented the following explanation :


Scusa, mi sono confuso con Access.

ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common
Files\System\ado\msado15.dll")

Tutto qui, una riga di codice.

Bruno
Marco Porzio replied to Bruno Campanini on 18-Jun-12 03:43 AM
Il giorno sabato 16 giugno 2012 00:43:27 UTC+2, Bruno Campanini ha scritto:

Non importa, grazie comunque, ora funziona tutto
Marco