Newsgroup: it.comp.appl.access
Titolo: esportare da codice i risultati di una query in excel

Salve a tutti.
In A97 tramite una query, 'esportazione' visualizzo i seguenti campi:
provincia
dato1
dato2
.....
Nel campo provincia possono essere presenti valori da 023 a 029.
Devo esportare i dati in Excel filtrandoli per ogni provincia, quindi nella
query metto come criterio [provincia]="023" ed esporto, [provincia]="024" ed
esporto, ecc..
Mi chiedevo se fosse possibile creare una routine che esegua questa
operazione automaticamente, esportando i dati filtrati per ogni provincia in
tanti files excel 023.xls, 024.xls, ecc..
Grazie a tutti in anticipo.
Giancarlo

 ha scritto nel messaggio
news:4nouc.262800$hc5.11...@news3.tin.it...

Vedi il Metodo TransferSpreadsheet :
    Membro di Access.DoCmd
DoCmd.TransferSpreadsheet acExport, 3, _
    "Employees","C:\NomeFoglio.Xls", True, "A1:G12"
Ciao.
@Alex.


Giancarlo

 ha scritto nel messaggio
news:Dbpuc.263023$hc5.11...@news3.tin.it...

In effetti avrei risolto così:
For n = 23 To 29
strSQL = "SELECT * FROM t1 where provincia=" & n & ";"
    Set qdf = dbs.CreateQueryDef("esportazione", strSQL)
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97,
"esportazione", "C:\" & n & ".xls"
    dbs.QueryDefs.Delete qdf.Name
Next n
Sembrerebbe funzionare. Ho solo un problema:
come faccio ad utilizzare un parametro di tipo testo?
Mi spiego. Il dato contenuto in 'provincia' è di  tipo testo 026, 027, 028,
ecc.
Con questo tipo di dato come faccio a fare il for..next?
Grazie.
Giancarlo

 Giancarlo
No direi che il Subject è corretto.
Non capisco la tua Difficoltà:
If Filtro ="023" then
    DoCmd.TransferSpreadsheet acExport, 3, _
     "Employees","C:\NomeFoglio23.Xls", True, "A1:G12"
ElseIf Filtro="024" then
    DoCmd.TransferSpreadsheet acExport, 3, _
     "Employees","C:\NomeFoglio24.Xls", True, "A1:G12"
End if
Ovviamente non hai spiegato come Passi il Criterio alla Query.
Se non devi Visualizzarla io userei un Parameter, poi il Metodo
sopracitato....!
Ciao.
@Alex.

 Giancarlo
Come hai farro funziona bene, io perň preferirei cosě:
Creati una Query chiamala "qry_Filtro_PROV"
Nella Query meti nella Riga Criteri un Parametro sotto il Campo Provincia
in questo modo:
[Provincia:]
Se provi ad aprire la Query ti chiede Provincia..?? tu inserisci il codice
024
e ti restituisce la Query Filtrata.
Ora come si puň automatizzare il tutto.!
   Dim qdf As DAO.QueryDef
   Dim n as Integer
   Dim strC as string
   Set qdf = CurrentDb.QueryDefs("qry_Filtro_PROV")
   For n=23 to 29
       strC=Format(cstr(n),"000")
       qdf.Parameters![Provincia:]= strC
       DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97,
       "esportazione", "C:\" & strC & ".xls"
    Next
    qdf.Close
    Set qdf=nothing
Usando il tuo sistema invece aggiungi questo:
strC=Format(cstr(n),"000")
strSQL = "SELECT * FROM t1 where provincia=" & chr(34) & strC & chr(34)
Ciao.
@Alex.

 ha scritto nel messaggio
news:c9d8fb$nhc$1...@lacerta.tiscalinet.it...

Perfetto! grazie.
Giancarlo

 ha scritto nel messaggio
news:4nouc.262800$hc5.11...@news3.tin.it...

Ciao,
oltre al metodo indicato da Alessandro volevo sottolineare la potenza di Jet
che puň creare un file di Excel direttamente da una query di creazione
tabella.
--------------------------------------
Sub EsportaInXls()
Dim strSql As String
Dim Provincia As String
Dim i As Integer
For i = 23 To 29
  Provincia = Format(i, "000")
  strSql = "SELECT * " & _
           "INTO [Excel 97;Database=C:\" & Provincia & ".xls;].Db " & _
           "FROM Tabella " & _
           "WHERE Provincia='" & Provincia & "'"
   CurrentDb.Execute strSql
Next
End Sub
-----------------------------------
Ciao Giorgio

 news:4nouc.262800$hc5.11...@news3.tin.it...
dimenticavo, se non avete l'Isam Excel 97 usate Excel 5.0
-----------------------------
strSql = "SELECT * " & _
           "INTO [Excel 5.0;Database=C:\" & Provincia & ".xls;].Db " & _
           "FROM Tabella " & _
           "WHERE Provincia='" & Provincia & "'"
----------------------------
Ciao Giorgio