Trasferire rifermenti librerie

di il
8 risposte

Trasferire rifermenti librerie

Buongiorno a tutti,
vi espongo un problema che ho notato si presenta ogni qualvolta trasferisco un file access da un computer ad un altro che hanno versioni di access differenti.
In particolare ho notato che, giustamente, quando trasferisco il file access creato col pc di casa a quello dell'ufficio il file non funziona perchè le librerie a cui faccio riferimento mancano. Pertanto devo andare a trovare le librerie presenti nella versione di Access sul oc in ufficio e integrarle.
C'è un modo per ovviare a questo problema facendo in modo che quando esegui il file su un altro pc dove la versione di una libreria non è disponibile automaticamente il file faccia riferimento a quella relativa disponibile?
Grazie per le risposte

8 Risposte

  • Re: Trasferire rifermenti librerie

    Di che librerie parliamo...?
    Se non sono quelle obbligatorie per Access ma sono librerie esterne come Excel o Word... basta sviluppare in modalità LATEBINDING e non EARLYBINDIN.

    Cerca nel web VBA latebinding e trovi il mondo.
  • Re: Trasferire rifermenti librerie

    Grazie Alex Molto interessante. Ti confermo che mi riferivo alle librerie di Excel.
    Ho provato: Ho eliminato il riferimento ad excel poi ho dichiarato inizialmente la variabili di excel (file excel, workbooks e worksheet) come oggetti generici:
    
    Dim ex As Object
    Dim wb As Object
    Dim ws As Object
    
    Poi ho specificato gli oggetti:
    
    'apre excel
     Set ex = CreateObject("Excel.Application")
    ex.Visible = True 'metti false se non vuoi vedere excel a video
    
    'apre il file xls
    Set wb = ex.Workbooks.Open(path_complete)
    
    'seleziona il foglio 1
    Set ws = wb.Worksheets(1)
    
    fin qui tutto ok.

    Ora vorrei salvare il file in formato CSV com comma.
    Prima, quando utilizzavo il riferimento esterno, lo facevo con il seguente codice:
    
    ' crea file .csv
         ChDir path
        ActiveWorkbook.SaveAs fileName:=path & "\" & NomeFile & ".csv", FileFormat:=xlCSV, CreateBackup:=False
    
    mentre ora ho il seguente errore Run Time error 424 : Object required

    Ho provato a sostituire ActiveWorkbook.SaveAs con wb.SaveAs ma ho il seguente errore:

    Run Time error 1004: SaveAs method of workbook class failed

    Come posso risolvere?
  • Re: Trasferire rifermenti librerie

    fzonno ha scritto:


    ...
    Ora vorrei salvare il file in formato CSV com comma.
    ...
    mentre ora ho il seguente errore Run Time error 424 : Object required
    Su questo non so darti suggerimenti, l'uso di Excel in generale e con automazione in particolare non è proprio la mia specialità.

    fzonno ha scritto:


    ...
    Ho provato a sostituire ActiveWorkbook.SaveAs con wb.SaveAs ma ho il seguente errore:
    Run Time error 1004: SaveAs method of workbook class failed
    Questo invece si spiega con l'impossibilità del codice di dare un significato a xlCSV. Hai eliminato il riferimento alla libreria di Excel, quella che prima era una costante con un valore già stabilito "dal programma" ora non significa nulla.
    Con l'uso del latebinding si perdono tutti i valori della costanti di quella libreria che ora non è più tra i riferimenti, devi dichiararla e valorizzarla tu, magari proprio nella sezione in cui gestisci la compilazione condizionale.
    Per la cronaca: xlCSV ha valore 6.
  • Re: Trasferire rifermenti librerie

    Ok grazie.
    con i tuoi suggerimenti ho risolto. Bastava usare
    FileFormat:= 6
    Grazie mille per la dritta.
    Dove posso trovare l'equivalenza dei valori delle costanti?
  • Re: Trasferire rifermenti librerie

    fzonno ha scritto:


    Dove posso trovare l'equivalenza dei valori delle costanti?
    Il sito Microsoft oppure con il riferimento alla libreria presente digiti nella finestra immediata
    ? nomecostante
    seguito dall'invio.
    Ancora, sempre con il riferimento alla libreria in elenco, con il visualizzatore oggetti che si attiva con il pulsante F2.
  • Re: Trasferire rifermenti librerie

    Comunque alla luce di quello che ho imparato ritengo che non abbia senso continuare a programmare in earlybinding in termini di riutilizzabilità del software su altri pc con altre versioni.
    Non credete?
  • Re: Trasferire rifermenti librerie

    E' così, in genere si usa Early in fase di sviluppo per facilitare con l'intellisense e poi, prima di distribuirlo, si passa a Late con le opportune modifiche (dichiarazioni e costanti)
  • Re: Trasferire rifermenti librerie

    Ricordo che quando sono referenziate le librerie durante lo sviluppo, potete usare F2 per esplorare costanti e altro
Devi accedere o registrarti per scrivere nel forum
8 risposte