ciao Nicola,
tutto ben?
ho fatto qualche tentativo ed esportando in questo modo :
docmd.OutputTo acOutputTable,"prodotti",acformatxls,"C:\pippo.xls"
la formattazione della valuta viene rispettata...prova e facci sapere....invece non viene mantenuta se esporto la tabella con gli strumenti messi a disposizione cliccando con il tasto dx sulla tabella e selezionando esporta e completando tutti i passaggi,
non so dirti se sia normale...
Ho steso questa sub per giocare un po' creando un'istanza xls in access....puoi vedere il risultato copiandola nel database di esempio di NorthWind oppure modificandola opportunamente nel tuo DB, ho inserito qualche commento per migliorare la comprensione...
ti saluto, Sandro
Sub exportToExcelLateB()
'imposto gli errori
On Error GoTo exportationErr
' dichiaro le variabili della sub
Dim newWorkBook As Object, newWorkSheet As Object, newExcelIstance As Object, rRange As Object
Dim rst As DAO.Recordset
Dim strSql As String
Dim i As Integer
' gestisco gli errori
strSql = "SELECT Prodotti.* FROM Prodotti" ' imposto la stringa del recordset
Set rst = DBEngine(0)(0).OpenRecordset(strSql, dbOpenSnapshot) ' apro il recordset di tipo snapshot non devo modificare solo visualizzare
' apro instanza excel ed imposto gli oggetti automazione
Set newExcelIstance = CreateObject("Excel.application")
Set newWorkBook = newExcelIstance.Workbooks.Add
Set newWorkSheet = newWorkBook.Worksheets.Item("Foglio1")
' setto il range in cui copiare il recordset in excel da a1 all'ultimo record del recordset
Set rRange = newWorkSheet.Range(newWorkSheet.cells(3, 1), newWorkSheet.cells(rst.RecordCount + 2, rst.Fields.Count))
rRange.CopyFromRecordset rst ' copio il recordset in excel
' imposto i nomi dei campi del recordset sulla riga 1 del file si excel
For i = 0 To rst.Fields.Count - 1
newWorkSheet.cells(1, i + 1) = rst.Fields(i).Name
newWorkSheet.cells(1, i + 1).Interior.ColorIndex = 8 ' imposto il colore delle instestazioni
newWorkSheet.cells(1, i + 1).Borders.LineStyle = 1 ' imposto il bordo delle intestazioni
Next
newExcelIstance.Visible = True ' rendo excel visibile
newWorkSheet.Columns("F").NumberFormat = "$ #,##0.00" ' imposto il corretto formato a due decimali per il campo prezzo
newWorkSheet.Columns("a:j").autofit ' regolo automaticamente la larghezza delle celle, migliorandone la visibilità
newWorkSheet.cells(rst.RecordCount + 4, 1).Value = "Numero records esportati: " & rst.RecordCount ' scrivo in fondo alla colonna A il numero di records esportati
' distruggo tutti gli oggetti e libero la memoria
Set rst = Nothing
Set newExcelIstance = Nothing
Set newWorkBook = Nothing
Set newWorkSheet = Nothing
Exit Sub
exportationErr:
MsgBox "oh, oh....qualcosa non va... errore numero: " & Err.Number & ", " & Err.Description
' distruggo tutti gli oggetti e libero la memoria
Set rst = Nothing
Set newExcelIstance = Nothing
Set newWorkBook = Nothing
Set newWorkSheet = Nothing
End Sub