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

Buona sera a tutti,
ho un problema con i riferimenti utilizzati da una applicazione
sviluppata in access 2003 ed utilizzata in ambiente Office 2007,
quando questa viene utilizzata con Office in versioni precedenti.
Nel caso specifico il problema si verifica con il riferimento a
excel.exe che (Office 2007) si trova in 'C:\Program Files\Microsoft
Office\Office12'.
Che fare nel caso si cerchi di usare lo stesso applicativo quando il
file suddetto si trova altrove?
In Office versione precedente, ad esempio, si trova nella directory ...
\Office11.
Con la routine sotto esposta posso ricavare l'elenco e le proprietà
dei riferimenti regolarmente collegati (IsBroken = False) e mancanti
(IsBroken = True); nel terzo caso, ovvero quando il file fosse
presente nella directory (...\Office12 in questo caso) ma non
collegato, la routine semplicemente non lo include fra i riferimenti:
'==========================================
Function ListeReferences()
Dim accRef As Access.Reference
For Each accRef In Application.References
With accRef
If (.IsBroken = False) Then
Debug.Print .Name, .GUID, .FullPath, .Major & "." & .Minor
Else
Debug.Print "Mancante: ", .GUID
End If
End With
Next accRef
End Function
'==========================================
Usando il codice GUID, con la successiva routine posso collegare
nuovamente il rif. a excel.exe (versione excel 1.6 - riferimento
'Microsoft Excel 12.0 Object Library'), ma SOLO SE excel.exe si trova
nella posizione corretta (...\Office12\excel.exe) e quindi solo se non
è mancante:
'==========================================
Sub ref_add_from_guid()
     References.AddFromGuid "{00020813-0000-0000-C000-000000000046}",
1, 6
End Sub
'==========================================
Lo scenario è quello della installazione della versione .mde del
suddetto applicativo, presso un utente che utilizza Office precedente
a 2007, effettuata direttamente dall'utente, senza bisogno di
assistenza da parte dello sviluppatore.
I problemi sono quindi due:
-come ripristinare il riferimento se il file in questione (excel.exe,
in questo caso) si trova in ...\Office11 anzichè ...\Office12.
-come fare riferimento alla corretta versione di excel (1.6 in questo
caso porta a 'Microsoft Excel 12.0 Object Library' ).
Spero di essermi spiegato, grazie e saluti a tutti.
Sergio

"sergio cosso"  ha scritto nel messaggio 
news:de9244bf-bf72-4d7f...@a31g2000vbt.googlegroups.com...











Sergio
____________________Risposta:
La tecnica che stai usando è di early binding, cioè io dichiaro la versione 
di Excel che mi interessa.
E' "comoda" all'inizio ma poi svela i problemi che hai riscontrato.
Usa invece la "Late Binding" ne trovi una marea di codice che in pratica usa 
Excel a prescindere dalla versione.
Ciao
MA

 "sergio cosso"  ha scritto nel messaggionews:de9244bf-bf72-4d7f...@a31g2000vbt.googlegroups.com...

Ottimo! Ma risolve anche il problema della diversa posizione del
riferimento?
Inoltre: per tutti gli altri riferimenti (dll, tbl, olb ocx ....ecc)
Grazie
Sergio

"sergio cosso"  ha scritto nel messaggio 
news:7b34fa3d-9601-402a...@g9g2000yqb.googlegroups.com...


________________Risposta:
Sì
Inoltre: per tutti gli altri riferimenti (dll, tbl, olb ocx ....ecc)
Grazie
Sergio
__________________Risposta:
No, ma se hai oggetti del genere mettili in una cartella ah hoc tua
MA