Come creare una macro per eseguire una query di Access e incollare il risultato in Excel

December 11

Come creare una macro per eseguire una query di Access e incollare il risultato in Excel


La creazione di una macro di Microsoft Access che si incolla i risultati di una query in Excel può essere fatto attraverso il collegamento con l'accesso da Excel, oppure applicando il codice di macro per controllare direttamente Excel da Access.

Nota: tutti tranne gli ultimi tre passaggi applicarsi agli utenti di accesso (e Excel) 2007. Se si dispone di una versione precedente di Access, procedere al terzo all'ultimo passo.

istruzione

1 In Access, creare una tabella di dati di esempio: inserire i seguenti dati in una nuova tabella:

Turista per caso, il 12/1/2009 $ 6,01
Turista per caso, il 12/3/2009, 7,98 $
ferro John, il 12/5/2009 $ 4,98
ferro John, il 12/6/2009 $ 5,98

2 Fare doppio clic sulle intestazioni di colonna (ad esempio \ "\" Field1) e sostituire ciascuno con queste intestazioni, in questo ordine:

libro, datesold, netsale

Salvare la tabella (\ "control-s \") con il nome di \ "libri. \"

3 Creare una query dal tavolo, e premere il tasto "\ Esc" la finestra di dialogo \ chiave nella \ "Mostra tabella \". Fare clic destro sul tab della query e selezionare \ immettere quanto segue nella finestra del codice "visualizzazione SQL \.":

Libri Select.

IN queryresults
Dai libri
WHERE (((books.book) Mi piace 'acc *'))
ANDARE

Salvare la query (\ "control-s \") e il nome \ "vbaquery. \"

4 Aprire Excel e premere \ della barra degli strumenti "dati> Da Access \" icona. Selezionare il \ "\" queryresults tabella nella \ "Seleziona tabella \" finestra di dialogo. Clicca \ finestra di dialogo "OK \" sul \ "Importa dati \" e notare i risultati della query: solo il \ "ferro John \" libri sono mostrati. Salvare il file di Excel con qualsiasi nome, e chiuderlo.

5 Riaprire il \ "libri \" di database in Access. Aprire il \ "vbaquery \" e rivedere i suoi \ "Criteri: \" campo di leggere \ "Come

'acc' \" (Non digitare le virgolette doppie Non digitare le virgolette singole, interiori..) Salvare di nuovo la query.

6 Creare una nuova query. Digitare la seguente istruzione SQL nella \ "visualizzazione SQL \" finestra, quindi salvare la query come \ "dropqueryresults \":

GOCCIA queryresults tavola;

7 Inserire integrato l'ambiente di sviluppo Visual Basic (IDE) premendo \ "alt-F11, \", quindi selezionare \ "Inserisci> Modulo \". Incollare il seguente codice nella finestra di codice vuota del nuovo modulo:

Public Sub RunQuery ()
'Eliminare la tabella dei risultati prima
On Error GoTo DO_QUERY
RunQueryForExcel (\ "dropqueryresults \")

DO_QUERY:
RunQueryForExcel (\ "vbaquery \")
End Sub

Public Sub RunQueryForExcel (qName As String)
DoCmd.SetWarnings False
CurrentDb.Execute qName
DoCmd.SetWarnings vero
End Sub

8 Posizionare il cursore in qualsiasi parte del \ "RunQuery \" subroutine e premere il tasto \ "F5 \" per eseguire la query. Riaprire la cartella di lavoro di Excel è stato aperto in precedenza e notare i dati aggiornati: la macro ha sostituito i \ righe "ferro John \" con la \ righe "accidentale turistica \". (Access 2007 o successivi gli utenti possono fermarsi qui.)

9 (Per gli utenti di Access 2003 e precedenti). STEP 7 permette di incollare il seguente codice in un nuovo modulo nell'IDE di Visual Basic:
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Public Sub pasteToExcel ()

Const qName = \ "vbaquery \"
db fioco come DAO.Database
Dim recset Come DAO.Recordset
s Dim come stringa
Dim appXL Come Excel.Application
Dim ro, co

'' '' '' '' '' '' '' '' '' '' '' '' '
Set appXL = CreateObject (\ "Excel.Application \")
appXL.Workbooks.Add

Set db = CurrentDb
Set recset = db.OpenRecordset (qName)
s = \ "libro \" & \ ", \" e \ "dateddsold \" & \ ", \" e \ "netsale \" & vbCr
appXL.ActiveSheet.Cells (1, 1) = s
ro = 2
co = 1
"\" S = \
Do While Non recset.EOF

s = s & recset![book] & \", \" & recset![datesold] & \", \" & recset![netsale] & vbCr
appXL.ActiveSheet.Cells(ro, co) = s
recset.MoveNext
ro = ro + 1
s = \"\"

Ciclo continuo
recset.Close
db.Close
appXL.ActiveWorkbook.SaveAs (\ "c: \ dataFromAccess.xls \")
appXL.Quit

End Sub
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Selezionare \ "Strumenti> Riferimenti \" e controllare il \ "Microsoft Excel Objects Library. \"

10 Ritorno a Access e fare passi da 1 a 3. Tuttavia, per il passaggio 3, incollare questo codice SQL nella finestra del codice SQL:

libri Select.


Dai libri
WHERE (((books.book) Mi piace 'acc *'));

11 Rientro in Visual Basic. Posizionare il cursore all'interno del \ "pasteToExcel \" la funzione e premere il tasto \ "F5 \" per eseguire la funzione. Aprire il file \ "c: \ dataFromAccess.xls \" Excel per visualizzare i risultati.