Originariamente inviato da primi_passi
grazie, ma il mio problema è questo: devo esportare da una tabella access e mettere i dati su un foglio xls con i campi predefiniti.
cioe: la tabellla acces contiene i campi: nome, cognome, data.
questi campi li devo mettere su un foglio xls, dove non sono sequenziali, cioe sul foglio xls sono messi in questo ordine; luogo, nome, cognome, parte, data, devo riempire solo i campi porvenienti dalla tabella,(quindi nome, cognome, data)tralasciando luogo e parte ovviamente devo mettere sul folgio xls tutti i record che in tabella hanno la stessa data di estrazione.
spero di essere stato chiaro.
Ti posto un esempio di base tramite DAO.
Creati una maschera in access dove metterai una casella di testo di nome txtData in cui inserirai la tua data nel formato gg/mm/aaaa e un pulsante per lanciare la sub di nome cmdInvio. Una volta aperto l'editor vba vai su strumenti => riferimenti e aggiungi quelli relativi a Microsoft DAO x.x Object Library e a Microsoft Excel x.x Object Library
codice:
Private Sub cmdInvio_Click()
On Error Resume Next
Dim db As DAO.database
Dim rst As DAO.Recordset
Dim colonna As Integer
Dim numRecord As Long
Set db = CurrentDb
Dim xlApp As Excel.Application
Dim xlWorkbook As Excel.workbook
Dim xlSheet As Excel.worksheet
If IsNull(txtData.Value) Then
MsgBox "Inserire una data"
Exit Sub
End If
Set rst = db.openrecordset("select nome,cognome,data from nome_tabella where data = #" & Format(txtData.Value, "mm/dd/yyyy") & "#")
numRecord = rst.RecordCount
If numRecord < 1 Then
MsgBox "Nessun record trovato", vbExclamation, "Nessun risultato"
Exit Sub
End If
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWorkbook = xlApp.workbooks.Add
xlApp.ScreenUpdating = False
Set xlSheet = xlWorkbook.Sheets(1)
For colonna = 0 To rst.Fields.Count - 1
xlSheet.Cells(1, colonna + 1).Value = rst.Fields(colonna).Name
Next
With xlSheet
.range("A2").CopyFromRecordset rst
End With
'Aggiungo colonna A
xlSheet.range("A:A").Insert Shift:=xlToLeft
xlSheet.range("a1").Value = "luogo"
'Aggiungo colonna D
xlSheet.range("D:D").Insert Shift:=xlToLeft
xlSheet.range("d1").Value = "parte"
'adatto la larghezza di tutte le colonne nel range A:E
xlSheet.Columns("A:E").EntireColumn.Autofit
xlApp.ScreenUpdating = True
Set xlSheet = Nothing
Set xlWorkbook = Nothing
Set xlApp = Nothing
End Sub