giuliano....@gmail.com wrote:
> La situazione � questa: ho un database che mi collega i dati
> provenienti da un foglio excel ( listino.xls ) con le relative schede
> prodotto in pdf.
> Funziona tutto, il solo problema � che devo poter modificare da vba
> il percorso di collegamento alla cartella dove c'� il file
> listino.xls .
> Ho gi� una procedura simile che mi imposta la cartella dove il codice
> poi v� a cercare le varie schede. Il percorso ( fino alla cartella )
> viene memorizzato in una variabile globale chiamata Path.
> Come ho fatto con i pdf cos� vorrei fare con il collegamento della
> tabella excel ( nomi delle colonne uguali ai campi del database ma
> numero record in tabella variabile ).
> Attualmente ho impostato il collegamento " manuale " e tutto funziona
> a meraviglia, il problema � che devo dare l' applicazione anche ad
> altre persone e quindi non � detto che il path da utilizzare sia lo
> stesso del mio.
> Sono in confusione, ho la sensazione che mi st� perdendo in un
> bicchiere d' acqua.
> Avendo gi� la procedura che mi fornisce il percorso della cartella di
> riferimento e me lo memorizza in una variabile globale la cosa
> dovrebbe essere semplice ma, onestamente, non mi riesce proprio.
Vai nella finestra immediata e vedi cosa ti d� questo codice:
?Currentdb.TableDefs("NomeTabella").Connect
Dovrebb'essere qualcosa come
Excel ...;HDR=...;IMEX=...;DATABASE=c:\foo\listino.xls
dove i ... dipendono dalla versione di Office e altre impostazioni.
"c:\foo\listino.xls" sarebbe il percorso e nome del file di Excel
che devi aggiornare con il valore della tua variabile.
Il codice per aggiornalo potrebb'essere circa:
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim strFullPath As String
Dim strPos As Long
Set db = CurrentDb
Set tdf = db.TableDefs("NomeTabella")
strFullPath = TuaVariabileGlobale & "listino.xls"
'se nella variabile manca l'ultima barra devi includerla
'strFullPath = TuaVariabileGlobale & "\listino.xls"
strPos = InStr(tdf.Connect, ";DATABASE=") + 10
If Mid(tdf.Connect, strPos) <> strFullPath Then
tdf.Connect = Left(tdf.Connect, strPos - 1) & strFullPath
tdf.RefreshLink
End If
--
Ciao
Karl
*********
Access FAQ:
http://www.donkarl.com/it