Newsgroup: it.comp.appl.access
Titolo: riferimenti excel e early/late binding

Ciao a tutti,
non riesco ad uscire da questo problema.
 
In azienda abbiamo pc xp con office 2003 e altri con windows 7 ed office 
2010.
Il mio pc di sviluppo è w7 con access 2003 e office 2010.
 
Ho creato una procedura (mde) che legge da un db oracle e scrive per 
ciascun utente dei fogli excel personalizzati quando lo desiderano.
Utilizzando il late binding tutto funziona regolarmente ma le 
prestazioni della parte che genera i fogli excel non sono il massimo.
Ho provato (visto un suggerimento in rete) ad utilizzare l'early binding 
e le tempistiche si sono ridotte in maniera impressionante.
Tutta felice e gongolante inizio a distribuire la nuova versione ai 
colleghi e qui inizia il problema. Il riferimento ad excel sul mio pc è 
la libreria di excel che risiede nella cartella office14 (2010), mentre 
su alcuni dovrebbe essere quella che risiede in office11 (2003), quindi 
va in errore per riferimento mancante.
La soluzione  è quella di ricreare l'mde sul pc del collega (scomoda se 
i colleghi con xp sono tanti), oppure creare due programmi diversi su 
due pc di sviluppo diversi (scomodo per la manutenzione).
Esiste (tenendo conto di distribuire degli mde) un metodo per 
ripristinare la libreria corretta (riferimento ad excel in questo caso), 
magari anche pescando il path da un file di configurazione o da una 
tabella o altro?
 
grazie in anticipo
Nicoletta

Nicoletta ha scritto:

Avevo anch'io lo stesso problema. Siccome usiamo file .accdb anziché .mde
la soluzione era nella modifica dei riferimenti sul pc vecchio (scomodo).
Ultimamente, però, il problema non si presentava: all'avvio le librerie si
aggiornavano, però era da office14 a office12, non so office11.
Purtroppo non so come aiutarti.
RB
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

Ciao Nicoletta credo ci siamo già incrociati...
 
Function AddFromFile(FileName As String) As Reference
    Membro di Access.References
 
Esempio:
 
References.AddFromFile ("C:\Program Files\Microsoft
Office\OFFICE11\EXCEL.EXE")
 
La realtà è che devi ricavare dal SISTEMA il PATH del SERVER di
AUTOMAZIONE... e credo si possa fare in 2 modi:
Registry:-----> 
http://support.microsoft.com/kb/240794
 
 
Oppure con la chiamata API FindExecutable, passando alla chiamata API
il riferimento al File Excel in modo da ricavare l'EXE associato
all'estenzione XLS...
 
Private Declare Function FindExecutable Lib "shell32.dll" Alias
"FindExecutableA" (ByVal lpFile As String, ByVallpDirectory As String,
ByVal lpResult As String) As Long
Function apicFindExecutable(strDataFile As String, strDir As String)
As String
  'Resturns exectuable for passed data file.
  Dim lgnApp As Long
  Dim strApp As String
  strApp = Space(260)
  lngApp = FindExecutable(strDataFile, strDir, strApp)
  If lngApp > 32 Then
    apicFindExecutable = strApp
  Else
    apicFindExecutable = "No matching application."
  End If
End Function
 
a quel punto si passa il PATH al metodo AddFromFile...
 
Saluti
 
Ciao
@Alex

 se i colleghi con xp sono tanti), ...
 
Hai già provato di creare l'mde sempre e solo sul pc con O03,
cioè distribuire questa versione anche sui pc con O10?
È più probabile che funziona un upgrade che un downgrade.
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it