De Alberto (aglezb) - importar datos a Access

Como te había anticipado, tengo una nueva pregunta en la que sé me puedes ayudar. Voy a basarla en la pequeña hoja de Excel que te envié con mi anterior pregunta.
Pudieras indicarme como desarrollar una rutina, ¿digamos para un botón en un formulario de Access con la cual yo pueda "descargar" o importar datos a Access desde Excel?
En general cuál sería un procedimiento básico para vincular Access con otros programas como Outlook, ¿etc?

1 respuesta

Respuesta
1
Me alegro de volver a saber de ti!
Te he hecho un pequeño procedimiento de ejemplo para que veas como, teniendo un fichero de excel (c:\Fichero.xls) con datos en la primera columna, como hacer para abrir ese documento, coger esos datos y meterlos en una tabla (TablaDatos).
Esto es sólo un ejemplo. Tu, si quieres recoger varias columnas de datos, como la hoja excel que me enviaste, deberás modificar un poco el código en lo que al Insert se refiere para meter los datos, y el bucle, ya que como verás yo sólo recojo los datos de la columna "A".
Para que se ejecute este procedimiento desde un botón o cualquier otro evento, es tan sencillo como usar:
Call ImportaExcel
Respecto a la vinculación con herramientas de Office, indicarte que cada una de las herramientas (OutLook, Word, etc.) son vinculadas más o menos de la misma manera que esta que te muetsro para excel; es decir, se crea una variable de objeto, se utiliza su propiedad correspondiente para indicar el documento a abrí, etc., pero con la salvedad de que cada herramienta de Office tiene sus propias propiedades y sus propios eventos, por lo que no hay una "regla fija" para todos ellos. Por ejemplo, excel tiene posibilidad de crear nuevas hojas para un libro, pero eso en Word ni existe...
Si te interesa el tema de vínculos con Office te recomiendo que te hagas con algún libro de programación VBA, dónde tendrás la información necesaria para vincular todas las herramientas de Office entre sí, o con Visual Basic, etc...
Espero haberte podido ser de ayuda y que este ejemplo te valga acoplándole tus modificaciones particulares.
Un saludo y no dudes en preguntarme si tienes algún problema o consulta.
Óscar L.M.V.
- EJEMPLO DEL PROCEDIMIENTO
Sub ImportaExcel()
'Inicializamos las Variables Objeto Aplicacion
Dim appExcel As Object
Set appExcel = CreateObject("Excel.Application")
'Abrimos el fichero de Excel donde tengamos los datos
appExcel.Workbooks.Open FileName:="c:\Fichero.Xls"
'Ponemos la aplicación Excel Visible
appExcel.Visible = True
'Recojemos los datos de la hoja excel que nos interese
Dim IndicePrueba As Long
IndicePrueba = 1
appExcel.Range("A" & IndicePrueba).Select
With appExcel
Do While .ActiveCell.FormulaR1C1 <> ""
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO TablaDatos (DatoExcel) VALUES(" & .ActiveCell.FormulaR1C1 & ")")
DoCmd.SetWarnings True
IndicePrueba = IndicePrueba + 1
.Range("A" & IndicePrueba).Select
Loop
End With
'Si queremos cerrar la aplicación, deberíamos utilizar lo siguiente
appExcel.Quit
End Sub
Hola Oscar
Te agradezco mucho no solo la certeza de tus aclaracions sino también la rapidez de las mismas.
Hay algunos pequeños detalles que necesito me aclares.
1- SI el fichero de excel que quiero abrir no tiene siempre el mismo nombre o la misma ubicación, como podría hacer para que la linea de comando "appExcel.Workbooks.Open FileName" furea más interactiva, ¿por ejemplo con algo como un browse que me permita buscar el fichero donde quiera que esté?
2- Entiendo que el "INSERT INTO" me sirve tanto para agregar datos a una tabla con datos como a una nueva vacía. ¿Es así?
3- Tuve un pequeño problema que quiero me ayudes a resolver. Importé manualmente una hoja de excel hacia una tabla nueva de access y el contenido de esa tabla lo copie y lo pegue a otra existente con la misma estructura de datos. Ahora resulta que las consultas asociadas a dicha tabla no reflejan los registros nuevos. ¿Qué sucedió?
Una vez más te agradezco tu ayuda y admiro tusconocimientos en este tema.
¿De dónde eres?
Un saludo
Alberto
No hay nada que agradecer..., ya lo sabes...
Te voy contestando:
1º Hacerlo interactivo: Puedes utilizar, como bien dices, el propio "browser" de Windows. Para ello sólo debes insertar (Herramientas /Insertar) el objeto ActiveX que se llama "Microsoft Common Dialog". Creo que debes tenerlo, aunque no te lo puedo asegurar porque yo al tener cientos de programas de desarrollo (Flash, VB, Java, VC, ...) en el PC, también puede ser que me lo instalara alguno de ellos.
Luego, unicamente es buscar información en internet de como utilizar este objeto. Si tuvieras problemas en encontrar esta información podría intentar mostrarte como usarlo.
2º "INSERT INTO": Si, te sirve tanto para agregar datos a una tabla con datos como a una nueva vacía. Es concretamente eso, agregar registros nuevos en una tabla independientemente de lo que tenga la tabla. Te recomiendo que cuando te tengas tiempo busques información sobre SQL y cómo se formulan las sentencias, ya que te será muy útil conocer esto bien, tanto para Access como para casi todos los lenguajes, ya que el lenguaje SQL es prácticamente extandar.
3º Problemas: Sin ver la tabla y los datos no se decirte... Seguramente (es lo que suele pasar en estos casos) puede ser debido a espacios que en Excel existían y que, aunque en las tablas los campos vinculados son prácticamente los mismos, hay algún espacio "jodiendo la marrana" delante o después del dato... Pero no se, es una suposición... Sin verlo...
Si continúan tus problemas en este sentido hazme llegar la BBDD compactada y comprimida a [email protected] y le hecho un vistazo a ver que tiene de malo esos datos...
Un saludo. Hasta pronto!
Óscar L.M.V.
hey hermano!
Yo pensé'que ya había finalizado esta pregunta y veo que todavía sigue pendiente. Lo siento mucho por haberla demorado inconscientemente.
Por supuesto que la valoro de excelente porque no hay otro calificativo mayor.
No se si habrás recibido el mensaje que te envié con una BD y una hoja de excel.
Espero tu respuesta.
Alberto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas