Compare planilha com banco de dados para gerar documento

Compare planilha com banco de dados para gerar documento

Estou tentando agilizar a produção de um documento que precisa ser criado regularmente. Existem tarefas associadas a instruções detalhadas sobre como concluí-las, e cada uma delas possui um número de identificação específico que é reutilizado em vários projetos. Eu absorvi o máximo possível desses IDs de tarefas em um banco de dados de acesso.
Para cada projeto, outra pessoa extrai uma lista de todas as tarefas necessárias de outro banco de dados que não consigo acessar e as coloca em uma pasta de trabalho do Excel com formato padrão. Para cada projeto, preciso:

  • Extraia todas as tarefas relevantes por número de identificação
  • Compare-os com a lista padrão em meu banco de dados, que contém as etapas para concluir a tarefa e algumas outras informações
  • Gere um documento com formato específico usando informações específicas sobre as tarefas

Escrever uma macro no Excel parecia muito trabalhoso, mas é a melhor aposta, mas não posso ter certeza de que o banco de dados de acesso permanecerá sempre no mesmo lugar ao qual pertence. Como o banco de dados é o item consistente em todos os projetos, pensei em escrever uma macro no Access e ter uma caixa de diálogo perguntando onde está a planilha funcionaria, mas usar uma tabela para comparar as duas listas parecia mais complexo do que simplesmente gerar uma planilha de comparação dentro do Excel. Eu realmente não considerei escrever uma macro no Word, embora isso também seja uma possibilidade.

Estou tentando encontrar a maneira mais lógica de criar essa configuração. Usar três programas de escritório diferentes parece bastante complicado, mas estou limitado no software que tenho disponível para fazer isso:

  • Escritório 2007
  • Sem comparação
  • Os outros programas instalados (não consigo instalar software adicional) não parecem remotamente relevantes para a tarefa

Alguém tem alguma ideia de como fazer isso?

Responder1

Se você tivesse o Crystal Reports, poderia unir a tabela do Excel às tabelas do Access; em seguida, imprima 2 relatórios, um com correspondência de dados no ID e outro relatório para listar registros sem correspondências de ID. A formatação é incrível. Eu escrevo relatórios onde associo arquivos Excel a um banco de dados Oracle para geração de relatórios. Você deve ser capaz de juntar o arquivo Excel ao ACCESS e criar o mesmo tipo de relatório, assumindo que ambos tenham os campos de ID correspondentes.

Responder2

Você já pensou em usar uma conexão ODBC para vincular os dois conjuntos de dados?

Resultados do Google para ODBC e Excel

Se o seu ambiente de trabalho nativo for o banco de dados e você puder trabalhar na automatização da entrada desses novos campos de dados, poderá usar consultas simples para selecionar os (novos) dados incomparáveis ​​e trabalhar a partir daí. É uma pena que você não possa simplesmente transferir o primeiro banco de dados para o seu próprio ou fazer com que o primeiro conjunto de exportações de dados simplesmente exporte um CSV de dados novos ou alterados.

Em ambos os lados, você pode anexar os novos dados e compará-los com os existentes (com consultas no Access ou uma tabela dinâmica no Excel). Se você criar uma nova coluna/campo para atuar como um sinalizador booleano simples, poderá diferenciar os conjuntos de dados e mesclá-los na mesma tabela/documento. Alternativamente, aplique um código para importações semanais (ou qualquer período) para que você possa usar este campo "sinalizador" para consultas futuras.

A tabela dinâmica seria minha primeira parada, pois você pode trabalhar mais rápido no estágio de definição do escopo do que com consultas de banco de dados e pode visualizar seus requisitos de relatório/comparação em uma única visualização.

Se você puder "lavar" seus dados para torná-los anônimos, poste alguns exemplos para soluções mais específicas.

Responder3

Você pode obter os dados do Excel como um conjunto de registros, o que permitirá fácil comparação

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

agora você pode usar o conjunto de registros XL, pesquisá-lo/percorrê-lo e colocar as informações em seu banco de dados

informação relacionada