Compare la hoja de cálculo con la base de datos para generar un documento

Compare la hoja de cálculo con la base de datos para generar un documento

Estoy intentando agilizar la producción de un documento que debe crearse periódicamente. Hay tareas asociadas con instrucciones detalladas sobre cómo completarlas, y cada una de ellas tiene un número de identificación específico que se reutiliza en varios proyectos. Aspiré tantas ID de tareas como pude en una base de datos de acceso.
Para cada proyecto, alguien extrae una lista de todas las tareas requeridas de otra base de datos a la que no puedo acceder y las coloca en un libro de Excel con un formato estándar. Para cada proyecto, necesito:

  • Introduzca todas las tareas relevantes por número de identificación
  • Compárelos con la lista estándar en mi base de datos que tiene los pasos para completar la tarea y alguna otra información.
  • Generar un documento con un formato específico utilizando la información específica sobre las tareas.

Escribir una macro en Excel parecía mucho trabajo, pero era la mejor opción, pero no puedo estar seguro de que la base de datos de acceso siempre permanecerá en el mismo lugar al que pertenece. Dado que la base de datos es el elemento constante en todos los proyectos, pensé en escribir una macro en Access y tener un cuadro de diálogo preguntando dónde funcionaría la hoja de cálculo, pero usar una tabla para comparar las dos listas parecía más complejo que simplemente generar una hoja de comparación. dentro de excel. Realmente no consideré escribir una macro en Word, aunque esa también es una posibilidad.

Estoy tratando de encontrar la forma más lógica de crear esta configuración. Usar 3 programas de Office diferentes parece bastante complicado, pero el software que tengo disponible para lograr esto es limitado:

  • Oficina 2007
  • Incomparablemente
  • Los otros programas instalados (no puedo instalar software adicional) no parecen ni remotamente relevantes para la tarea

¿Alguien tiene alguna idea de cómo hacer esto?

Respuesta1

Si tuvieras Crystal Reports, podrías unir la tabla de Excel a las tablas de Access; luego imprima 2 informes, uno con coincidencias de datos de ID y el otro informe para enumerar registros sin coincidencias de ID. El formateo es increíble. Escribo informes en los que uno archivos de Excel a una base de datos Oracle para generar informes. Debería poder unir el archivo de Excel a ACCESS y crear el mismo tipo de informes, suponiendo que ambos tengan los campos de ID que coincidan.

Respuesta2

¿Ha considerado utilizar una conexión ODBC para vincular los dos conjuntos de datos?

Resultados de Google para ODBC y Excel

Si su entorno de trabajo nativo es la base de datos y puede trabajar para automatizar la entrada de esos nuevos campos de datos, puede utilizar consultas simples para seleccionar los datos no coincidentes (nuevos) y trabajar desde allí. Es una pena que no pueda simplemente extraer la primera base de datos de su propia base de datos, o que el primer conjunto de exportaciones de datos simplemente exporte un CSV de datos nuevos o modificados.

En cualquier lado, puede agregar los datos nuevos y compararlos con los existentes (con consultas en Access o una tabla dinámica en Excel). Si crea una nueva columna/campo para que actúe como un indicador booleano simple, puede diferenciar entre conjuntos de datos y fusionarlos en la misma tabla/documento. Alternativamente, aplique un código para importaciones semanales (o cualquier período) para que pueda usar este campo de "bandera" para consultas futuras.

La tabla dinámica sería mi primer puerto de escala, ya que puede trabajar más rápido en la etapa de determinación del alcance que con las consultas de la base de datos, y puede ver sus requisitos de informes/comparación en una sola vista.

Si puede "lavar" sus datos para anonimizarlos, publique algunos ejemplos para soluciones más específicas.

Respuesta3

Puede acceder a los datos de Excel como un conjunto de registros, lo que permitirá una fácil comparación.

Dim xldb As New adodb.Connection
Dim xlcmd As New adodb.Command
Dim XL As New adodb.Recordset

With xldb
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;ReadOnly=True"";"
    .Open
End With

Set xlcmd.ActiveConnection = xldb
xlcmd.CommandType = adCmdText
xlcmd.CommandText = "Select * from [Sheet1$]"
XL.CursorLocation = adUseClient
XL.CursorType = adOpenDynamic
XL.LockType = adLockOptimistic
XL.Open xlcmd

ahora puede usar el conjunto de registros XL, buscarlo/recorrerlo y colocar la información en su base de datos.

información relacionada