Newsgroup: it.comp.appl.access
Titolo: Riferimenti alle librerie

Come faccio ad automatizzare i riferimenti alle librerie corrette quando 
cambio versione di Office e/o Windows?
Mi spiego meglio.
Se uso Access 2k ed un modulo fa riferimento alla libreria Microsoft outlook 
9.0 object lybrary, se istallo il mio programma in un PC che ha installato 
Office 2003 il riferimento deve essere cambiato in Microsoft Outlook 11.0 
object library ?
C'è modo di automatizzare questa cosa ?
Grazie anticipatamente.
Roberto Spinella 

 wrote in message
news:42868653$0$20671$
5fc...@news.tiscali.it

Se non hai la necessità di accedere e/o intercettare Eventi degli
oggetti di Librerie esterne devi usare il metodo Late_Binding
o associazione Tardiva.
Se usi :
Private WithEvents wordApp    As Word.Document
non puoi usare la tecnica LateBinding, quindi dovresti
verificare se le Lirerie sono compatibili, ed eventualmente
caricarle usando LoadLibrary(API) oppure 
Set ref = References.AddFromFile(strNomeFile)
 
Se invece non usi gli eventi, come in questo caso:
Private wordApp               As Word.Application
ti basta non definire il tipo di Oggetto:
Private wordApp               As Object
quindi verrà definito in modo tardivo all'associazione
On Error goto gestErrori
' Definizione dell'oggetto Se già aperto
Set wordApp = GetObject(, "Word.Application")
' Quì fai quello che vuoi
Exit sub
gestErrori:
' Intercettazione errore per crearlo:
If err.Number = 429 Then
       'se c'è stato un errore è perchè Word non era già aperto:
       'aprilo adesso
       Set wordApp = CreateObject("Word.Application")
       Resume Next
 
Else
       Msgbox Err.Number & err.Description
End if
End Sub
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio 
news:8c7ce612400bf8b877...@mygate.mailgate.org...

Grazie Alex
mi sembra molto bello ma come si fà ad implementare questa tecnica del late 
binding ? 

 binding ?
Esattamente come ti ho indicato, il codice è proprio
quello.
In paratica basta usare una variabile Oggetto e
sfruttare l'associazione tardiva con il GetObject/CreateObject.


 ha scritto nel messaggio 
news:8c7ce612400bf8b877...@mygate.mailgate.org...

Scusami Alex ma faccio un pò fatica ad implementare quanto tu mi hai 
suggerito
L'errore si verifica ancor prima della fase runtime, gia durante la 
compilazione dei vari moduli.
In particolare su 2 functions: la prima che necessita la library DAO e la 
seconda che vuole la Outlook Library
Ti elenco parte del codice:
Sub SendAttach(Soggetto As String, A As String, Optional Testo As String, 
Optional All As String)
'invia una mail con allegato tramite Outlook
'necessita del riferimento Microsoft Outlook x.x object library 
(msoutlx.olb)
'6-5-5 Aggiunta compressione ZIP degli allegati
'L'errore sulla prossima istruzione si verifica se mancano i riferimenti 
alla libreria OUTLOOK
On Error GoTo errsendattach
Dim appOutl As New Outlook.Application
Dim itm As Outlook.MailItem
Dim OS As String
'Dim dest As String
OS = Left(fOSName, 10)
Dim destination, parm1, strcmd As String, zipprg
Se provo a compilare i moduli senza aggiungere i riferimenti alla riga Dim 
appOutl As New Outlook.Application mi genera l'errore
TIPO DEFINITO DALL'UTENTE NON DEFINITO
anche se poi nella gestione errori uso la CreateObject.
C'è qualcosa che mi sfugge o sono Io un pò imbranato ?
Ciao e grazie