Sono incappato in tutti i problemi da voi preventivati.
Sto usando il database Access su più pc con versioni diverse di Office e ovviamente adesso non funziona più su alcuni pc.
Ho recuperato anche questo post ** di Alex, ma non riesco a capire cosa devo modificare.
Dalle indicazioni di Phil mi sembrava di aver capito che fosse meglio non usare il CreateObject, ma dal post di Alex sembra il contrario.
Sono certo di essermi perso qualche passaggio, ma non trovo dove.
Adesso il mio codice è il seguente:
Public Sub AggiornaFileExcel(sPath, sFile As String, iPause As Single)
Dim sPathFile As String
sPathFile = sPath & sFile
Dim AppExcel As Excel.Application ' Variabile che farà riferimento excel
Dim BookExcel As Excel.Workbook ' Variabile che farà riferimento al workbook
Dim SheetExcel As Excel.Worksheet ' Variabile che farà riferimento al worksheet
Set AppExcel = New Excel.Application 'Era CreateObject("Excel.Application") ' Creo l'oggetto excel alla variabile
Set BookExcel = AppExcel.Workbooks.Open(sPathFile) ' Setto la variabile del workbook al file che devi aprire e sul quale operare
Set SheetExcel = BookExcel.Worksheets("Foglio1") ' Imposto su quale foglio di lavoro operare
AppExcel.Visible = False ' Apro il foglio in Background
BookExcel.RefreshAll ' Aggiorno i dati
'Call Sleep(iPause) ' E' necessario dare il tempo al file di Excel di effettuare l'aggiornamento
DoEvents
BookExcel.Close SaveChanges:=True ' Chiudo il file salvandolo
AppExcel.Quit ' Chiudo l'applicazione
' Svuoto le veriabili che fanno riferimento a applicazione, book e sheet
Set SheetExcel = Nothing
Set BookExcel = Nothing
Set AppExcel = Nothing
End Sub
Per contestualizzare la situazione, i file in Excel che ho bisogno di aggiornare, sono delle esportazioni di alcune query da un Gestionale (Arca).
Aprendo il file Excel e facendo Aggiorna, i dati vengono ripescati dalla fonte.
Io vorrei automatizzare l'aggiornamento da Access.