Tecnología

Inicio

Cómo crear una macro para ejecutar una consulta de Access y pegar el resultado en Excel

Cómo crear una macro para ejecutar una consulta de Access y pegar el resultado en Excel


La creación de una macro de Microsoft Access que pastas de resultados de una consulta en Excel se puede hacer mediante la vinculación a Access desde Excel, o mediante la aplicación de código de macro de Excel para controlar directamente desde Access.

Nota: todos menos los tres últimos pasos aplicarse a los usuarios de acceso (y Excel) 2007. Si tiene una versión anterior de Access, pasaron a la tercera a la última etapa.

Instrucciones

1 En Access, crear una tabla de datos de la muestra: introduzca los siguientes datos en una nueva tabla:

el turista accidental 12/1/2009 $ 6.01
el turista accidental 12/3/2009 $ 7.98
Ironjohn 12/5/2009 $ 4.98
Ironjohn 12/6/2009 $ 5.98

2 Haga doble clic en los encabezados de columna (por ejemplo, \ "\" Campo1) y vuelva a colocar cada uno con estas cabeceras, en este orden:

libro, datesold, netsale

Guarde la tabla (\ "control-s \") con el nombre \ "libros. \"

3 Crear una consulta de la tabla, y pulse el cuadro \ "Esc \" clave en el \ "Mostrar tabla \" de diálogo. Haga clic en la ficha de la consulta y seleccione \ Introduzca lo siguiente en la ventana de código "vista SQL \.":

Libros SELECT

INTO. Queryresults
De los libros
DONDE (((books.book) Como 'acc *'))
IR

Guarde la consulta (\ "control-s \") y el nombre de \ "vbaquery. \"

4 Abrir Excel y pulse \ de la barra de herramientas "Datos> Del acceso \" icono. Seleccione el \ "\" queryresults de mesa en el \ "Seleccionar la tabla \" cuadro de diálogo. Haga clic \ casilla "Aceptar \" en la \ "Importar datos \" de diálogo y observe los resultados de la consulta: sólo el \ se muestran los libros "Iron John \". Guarde el archivo de Excel con cualquier nombre, y cerrarla.

5 Vuelva a abrir el \ "\" libros de base de datos en Access. Abra el \ "vbaquery \" y \ "revisar sus criterios: \" campo de leer \ "Como

'ACC' \" (No escriba las comillas dobles No escriba las comillas simples, interiores..) Vuelva a guardar la consulta.

6 Crear una nueva consulta. Escriba la siguiente instrucción SQL en el \ "vista SQL \" de la ventana, a continuación, guarde la consulta como \ "dropqueryresults \":

DROP TABLE queryresults;

7 Entrar en el entorno de desarrollo integrado de Visual Basic (IDE) pulsando \ "alt-F11, \" a continuación, seleccione \ "Insertar> Módulo \". Pegue el código siguiente en la ventana de código en blanco del nuevo módulo:

Public Sub runQuery ()
'Eliminar la tabla de resultados del primer
On Error GoTo DO_QUERY
RunQueryForExcel (\ "dropqueryresults \")

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

Public Sub RunQueryForExcel (qName como secuencia)
DoCmd.SetWarnings falsos
CurrentDb.Execute qName
Es cierto DoCmd.SetWarnings
End Sub

8 Coloque el cursor en cualquier lugar del \ "runQuery \" subrutina y presione \ "F5 \" para ejecutar la consulta. Vuelva a abrir el libro de Excel previamente abierta y observe los datos actualizados: la macro ha reemplazado a las filas \ "\" Iron John con el \ filas "turista accidental \". (Access 2007 o posterior usuarios pueden parar aquí.)

9 (Para los usuarios de Access 2003 y anteriores). Utilice el paso 7 para pegar el código siguiente en un nuevo módulo en el IDE de Visual Basic:
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Public Sub pasteToExcel ()

Const qName = \ "vbaquery \"
Dim db Como DAO.Database
Dim RecSet Como DAO.Recordset
s Dim como secuencia
Dim appXL Como Excel.Application
Dim ro, co

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

Set db = CurrentDb
Establecer RecSet = db.OpenRecordset (qName)
s = \ "libro \" y \ ", \" y \ "dateddsold \" y \ ", \" y \ "netsale \" & vbCr
appXL.ActiveSheet.Cells (1, 1) = s
ro = 2
co = 1
s = \ "\"
Aunque no hacer recset.EOF

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

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

End Sub
'' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '
Seleccione \ "Herramientas> Referencias \" y comprobar el \ "Microsoft Excel Biblioteca de objetos. \"

10 Volver al acceso y hacer los pasos 1 a 3. Sin embargo, para el paso 3, pega este código SQL en la ventana de código SQL:

libros SELECT.


De los libros
DONDE (((books.book) Como 'acc *'));

11 Volver al IDE de Visual Basic. Coloque el cursor dentro de la \ "pasteToExcel \" la función y pulse \ "F5 \" para ejecutar la función. Abra el archivo \ "c: \ dataFromAccess.xls \" Excel para ver los resultados.