Olá pessoal. Novamente estou com um problema e não consigo resolver.
Tenho um código que lança dados de uma tabela no Excel direto para o Access. Essa tabela é composta por 4 colunas ( Chave, Data,Meta e Realizado). Essa tabela corresponde aos 365 dias do ano, ou seja, cada linha recebe uma data.
O problema é que após o Excel transferir as informações para o Access, algumas linhas, ou datas, não são copiadas, ou seja, a tabela que deveria conter 365 linhas, sempre contém menos. Ja fiz diversos testes e não existe um número exato de linhas as quais não são copiadas, variam entre 1 e 40 linhas.
O código que uso é este aqui em baixo. Existe outros codigos para fazerem a conexão com o banco, mas isso está Ok. Alguem pode me ajudar com isso?
Sub Consolida_Diario()
'Cria variável que armazena os comandos SQL
Dim ComandoSQL As String
Dim Contador As Integer
Sheets("Consolidado Diario").Select
ActiveWorkbook.RefreshAll
'looping das colunas
Sheets("Consolidado Diario").Range("A2").Select
Contador = 0
'lopping das linhas
Do While Contador < 365
linha = ActiveCell.Row
'Armazena na variável o comando que fará a consulta SQL no BD Access
ComandoSQL = "select * from Exatidao_trato_Diario_C"
'Chama a rotina que faz a conexão com o BD
Call Conecta
'Atribui a variável de Objeto de BD a execução dos comandos SQL
Set consulta = banco.OpenRecordset(ComandoSQL)
With consulta
'Abre o Recordset do BD para inserção
.AddNew
' LANÇAMENTO DE DADOS DiarioS DAS FAZENDAS
.Fields("Chave_Data") = Sheets("Consolidado Diario").Cells(linha, 1) 'Chave_Data
.Fields("Data") = Sheets("Consolidado Diario").Cells(linha, 2) 'Data
.Fields("Meta_Conforto") = Sheets("Consolidado Diario").Cells(linha, 3) 'Meta_Conforto
.Fields("Real_Conforto") = Sheets("Consolidado Diario").Cells(linha, 4) 'Real_Conforto
'Se houver erro
On Error Resume Next
'Efetiva a atualização do BD
.Update
'Fecha o Recorset e a conexão com o BD
consulta.Close
banco.Close
'Chama a rotina que desconecta do BD (libera variáveis objeto de BD)
Call Desconecta
ActiveCell.Offset(1, 0).Select
End With
Contador = Contador + 1
Loop
'ActiveWorkbook.Save
'Exibe mensagem de sucesso na inclusão do registro
MsgBox "Os resultados diarios, semanais e mensais da Fazenda Conforto foram registrados no Banco de Dados Central com sucesso! ", vbDefaultButton1, "Fabrica Virtual"
'Abandona a subrotina
Exit Sub
End Sub
Postado : 18/11/2015 12:43 pm