Saltar al contenido

Exportar datos excel a access


xveganx

Recommended Posts

publicado

Buenos días, acudo a los mas sabios en Macros porque he buscado información por muchos lados  y la verdad siempre encuentro cosas diferente y me esta costando escoger el camino correcto y quería saber si es que ustedes pueden tirarme un destello de luz en esta incertidumbre. 

Quiero exportardatos de una hoja de excel a una tabla de access ya creada en una base de datos. 
La tabla tiene la misma cantidad de campos, que columnas el archivo excel, cada uno con el mismo nombre. 

CONTRATO    CONTRATO SAP    FECHA    PROVEEDOR    SUCURSAL    DESCRIPCION    MONEDA

El archivo es una lista de proveedores y sus contratos correspondientes, y datos sobre los mismos. 
La idea es bajar del sistema la informacion y exportarla mediante una macro sin la necesidad de realizar ese traspaso de datos de manera manual y que cada vez que la exporte la informacion vieja se borre y quede la nueva. 

Pero en cada ejemplo que he visto o he bajado y tratado de adaptar a la situacion surge algo y mi falta de conocimientos en codigo VBA me estanca y queria saber si alguien tiene o posee algun archivo que funcione bajo estas condiciones o algun tutorial que me permita aplicar lo que quiero. 

Desde ya muchisimas gracias. 

publicado

Hola @xveganx, para tener un mayor entendimiento sobre las consultas siempre se solicita un archivo de ejemplo, en tu caso la tabla de access y el excel, con datos ficticios es suficiente ya que lo se requiere es ver la estructura de tus archivos.

Te dejo un pequeño código que hace lo que quieres, siempre y cuando lo sepas adaptar a tu archivo.

Sub Exp_ACCESS()

  Set cn = CreateObject("ADODB.Connection")
  
  dbPath = "C:\Users\Usuario\Documents\Database1.accdb" '>>> RUTA de la BD
  
  Tabla = "Tabla1" ' >>> Nombre de la tabla de Access
  
  dbWb = Application.ActiveWorkbook.FullName
  dbWs = Application.ActiveSheet.Name
  scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
  dsh = "[" & Application.ActiveSheet.Name & "$]"
  cn.Open scn
  
  ssql = "Delete * From " & Tabla
  
  cn.Execute ssql
  
  ssql = "INSERT INTO " & Tabla & " ([CONTRATO], [CONTRATO SAP], [FECHA], [PROVEEDOR], [SUCURSAL], [DESCRIPCION], [MONEDA]) "
  ssql = ssql & "SELECT [CONTRATO], [CONTRATO SAP], [FECHA], [PROVEEDOR], [SUCURSAL], [DESCRIPCION], [MONEDA]" & _
  " FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh

  cn.Execute ssql
  
  MsgBox "Listo !!", vbInformation

End Sub

Saludos.

publicado

Antes que nada, muchas gracias por tu respuesta Alexander. 

No habia agregado los archivos porque la base de datos es muy grande  (pesa cerca de 2 gb ya que no solo tiene la tabla de informacion sobre los contratos si no que varios datos mas. lo que hice fue copiar la tabla en una base nueva y segmente el archivo excel  los cuales adjunto. 

Utilice el código que me dijiste, y le agregue las columnas que faltaban a la descripción. 

Cita

Sub Actualizar_Cttos()

  Set cn = CreateObject("ADODB.Connection")
  
  dbPath = "C:/Ubicacion en red/Seguimiento.mdb"
  
  Tabla = "Cttos" '
  
  dbWb = Application.ActiveWorkbook.FullName
  dbWs = Application.ActiveSheet.Name
  scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath
  dsh = "[" & Application.ActiveSheet.Name & "$]"
  cn.Open scn
  
  ssql = "Delete * From " & Tabla
  
  cn.Execute ssql
  
  ssql = "INSERT INTO " & Tabla & " ([CONTRATO], [CONTRATO SAP], [FECHA], [PROVEEDOR], [SUCURSAL], [DESCRIPCION], [MONEDA], [IMPORTE], [MONTO DISPONIBLE], [TC], [IMPORTE ACRODADO PES], [MONTO DISPONIBLE PES], [VIGENCIA DESDE], [VIGENCIA HASTA], [AUXILIAR], [GESTOR], [ESTADO APROBACION], [CUADRANTE], [TIPO CONTRATO], [SECTOR], [CONTROL], [ACTIVOS], [SPOT/ON CALL], [INDIRECTOS], [TERCEROS], [REEMPLAZOS], [COPIA_DW], [CLASE], [COMPRADOR]) "
  ssql = ssql & "SELECT [CONTRATO], [CONTRATO SAP], [FECHA], [PROVEEDOR], [SUCURSAL], [DESCRIPCION], [MONEDA], [IMPORTE], [MONTO DISPONIBLE], [TC], [IMPORTE ACRODADO PES], [MONTO DISPONIBLE PES], [VIGENCIA DESDE], [VIGENCIA HASTA], [AUXILIAR], [GESTOR], [ESTADO APROBACION], [CUADRANTE], [TIPO CONTRATO], [SECTOR], [CONTROL], [ACTIVOS], [SPOT/ON CALL], [INDIRECTOS], [TERCEROS], [REEMPLAZOS], [COPIA_DW], [CLASE], [COMPRADOR]" & _
  " FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh

  cn.Execute ssql
  
  MsgBox "Listo !!", vbInformation

End Sub

Al ejecutar la macro me arroja el siguiente error:

Cita


Se ha producido el error '-2147217904 (80040e10)' en tiempo de ejecucion
No se han especificado valores para algunos de los parametros requeridos

 

Al darle depurar, me subraya la siguiente linea:

cn.Execute ssql

Cita

Intente cargar los archivos al foro pero solo permite hasta 102kb asi que adjunto los archivos desde google Drive. 

https://drive.google.com/open?id=1yqqTNLUYbuckHpOXfQj7bP1extMvT1zn

 

publicado
Hace 1 hora, xveganx dijo:

Se ha producido el error '-2147217904 (80040e10)' en tiempo de ejecucion
No se han especificado valores para algunos de los parametros requeridos

Este error se da cuando en la tabla de access hay columnas que no existen o tienen un nombre distinto en la hoja de excel, debes revisar que todos los campos están dentro de los 2 archivos y que se llamen igual tomando en cuenta mayúsculas y minúsculas.

Hace 1 hora, xveganx dijo:

Intente cargar los archivos al foro pero solo permite hasta 102kb asi que adjunto los archivos desde google Drive. 

https://drive.google.com/open?id=1yqqTNLUYbuckHpOXfQj7bP1extMvT1zn

Los archivos que compartiste, el libro de excel no tienen ninguna hoja relacionada a la tabla de access, no se si fue un error al subir el archivo o no te entendí algo.

Te tejo el ejemplo de como debería funcionar el código que te compartí, debes ejecutar la macro "Actualiza_Cttos" en la hoja "Datos a Exportar"

Saludos.

Prueba cttos.zip

publicado

Muchas gracias Alexander por tomarte este tiempo para mi problema. 

Ejecute los archivos que me pasaste sin problemas... pero al querer cambiar la ruta de la DB (el archivo excel se encuentra en una carpeta diferente a la base de datos.. esta ultima se encuetra en una ubicacion en una red compartida) me vuelve a saltar un error. 

En la macro de la hoj original (la tuya) cambie y puse la ruta de la base de datos en la red y me sale error nuevamente y al poner el depurador señala   cn.Open scn

 

Mi consulta es, esta macro no sirve si los archivos no comparten la misma carpeta? 

 

publicado
Hace 2 minutos , xveganx dijo:

Muchas gracias Alexander por tomarte este tiempo para mi problema. 

Ejecute los archivos que me pasaste sin problemas... pero al querer cambiar la ruta de la DB (el archivo excel se encuentra en una carpeta diferente a la base de datos.. esta ultima se encuetra en una ubicacion en una red compartida) me vuelve a saltar un error. 

En la macro de la hoj original (la tuya) cambie y puse la ruta de la base de datos en la red y me sale error nuevamente y al poner el depurador señala   cn.Open scn

 

Mi consulta es, esta macro no sirve si los archivos no comparten la misma carpeta? 

 

Debes de estar escribiendo mal la ruta de la BD, no afecta que el archivo este en en la red siempre y cuando tengas permisos para acceder a ella.

Lo que suelo hacer para no equivocarme al escribir la ruta es usar esta opción del explorador de archivos 

image.png.37106c28a8a40a07dc2a65bbbebd4700.png

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Mil gracias, en verdad todo apoyo es super agradecido,   Su aporte y comentarios valen mucho para in servidor, y tiene razon esperare a conocer si alguien comparte alguna otra manera,   Gracias!!! (y)
    • Que tal, adjunto una propuesta de solución. Espero le sea útil. Power Query Filas Movidas (Solucion).xlsx
    • Bueno con el ejemplo así como lo tienes, te puedo compartir que ese error de referencia circular es el que te ayuda a mantener la fecha y la hora "congeladas" podrías evitarlo usando una columna auxiliar para el vacío pero la fórmula AHORA() te cambiara el resultado cada que la hoja se calcule o cuando le des guardar. Sin VBA de por medio será esperar el aporte de algún maestro o usuario avanzado. Si cambias de opinión pasa el tema para la otra sección. Saludos
    • A falta de una solución mas adelante, seguiré como hasta ahora, copiando y pegando el export en la plantilla. A mi me vale, pero quería evitar que el resto de usuarios (tampoco lo vamos a usar tantos!!) tuvieran que intervenir en nada del export y la transformación de datos de la plantilla. Mas o menos saben hacerlo, pero quería que todo estuviera automatizado. Si encuentro una solución os la pondré por aqui. Saludos.
    • Muy buen día a tod@s esperando se encuentren de la mejor manera posible,   Comparto lo siguiente: Estoy trabajando con un archivo en el cual me gustaría que cada que yo capturo ya sea un dato por ejemplo en la Cela A2, La fecha de la celda B2 se congele con la fecha en que estoy escribiendo algún dato, no obstante que en el resto de la columna continúe corriendo la fórmula: AHORA() hasta que yo capture dato y este se congele a ese momento,   La formula con la que lo estoy haciendo es la siguiente:  Congelar FECHA CAPTURA con error.xlsx =SI(ESBLANCO(A2), AHORA(), SI(ESBLANCO(B2), AHORA(), B2))  El problema es que al buscar en la misma B2 me arroja un error,    Cabe mencionar que para este ejercicio quisiera no usar macros ni VBA solo que funcione a base de formula, pero que esta no me arroje error como ya me lo hace   Les comparto CAPTURA DE ERROR,   Muchas gracias por el apoyo,   Saludos
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.