Ola Pessoal,
1. Estou com um problema para importar os dados de uma planilha Excel para uma tabela no meu BD.
2. Utilizei os códigos VBA do SILVIO, constantes no repositório: https://www.maximoaccess.com/t26809-importar-do-ms-excel-e-atualizar-tabela.
3. Fiz as devidas alterações, mas quando tento executar, o sistema abre o VB e apresenta o erro: Erro de compilação: O tipo definido pelo usuário não foi definido. Este erro esta na linha Dim fd As FileDialog.
4. Creio que o erro acontece porque não fiz, por não saber como, a referencia a Microsoft Office 11 Object Library, solicitado na instrução do código VBA exemplo do SILVIO. Utilizo o ACCESS 2016 e não descobri como fazer isso.
5. Meu código VBA acionado no evento clicar é este:
6. Peço ajuda de vocês para corrigir este erro. Caso seja preciso, envio o BD e a planilha que busco importar.
Abraço!!!
1. Estou com um problema para importar os dados de uma planilha Excel para uma tabela no meu BD.
2. Utilizei os códigos VBA do SILVIO, constantes no repositório: https://www.maximoaccess.com/t26809-importar-do-ms-excel-e-atualizar-tabela.
3. Fiz as devidas alterações, mas quando tento executar, o sistema abre o VB e apresenta o erro: Erro de compilação: O tipo definido pelo usuário não foi definido. Este erro esta na linha Dim fd As FileDialog.
4. Creio que o erro acontece porque não fiz, por não saber como, a referencia a Microsoft Office 11 Object Library, solicitado na instrução do código VBA exemplo do SILVIO. Utilizo o ACCESS 2016 e não descobri como fazer isso.
5. Meu código VBA acionado no evento clicar é este:
- Código:
Private Sub importar_Click()
' Requer referencia a Microsoft Office 11 Object Library
On Error GoTo PROC_ERR
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Title = "selecione o arquivo"
fd.Filters.Add "Arquivo XLS", "*.xls", 1 'se for o caso, mude a extensão para XLSX, onde estão xls
fd.Show
If (fd.SelectedItems.Count > 0) Then
'------inicio importação excel para sincronização
Dim strPathFile As String, strFile As String, strPath As String
Dim strTable As String
Dim blnHasFieldNames As Boolean
blnHasFieldNames = True
strPathFile = fd.SelectedItems(1)
strTable = "TblPrepostoTmp" 'planilha temporária que vai receber os dados do MS Excel.[/color]
'apaga temporários, não é necessário, mas por segurança estou limpando a tabela antes
DoCmd.RunSQL "Delete * from TblPrepostoTmp"
'importa para tabela local temporária
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames
MsgBox "Registros importados com sucesso !" & vbCrLf & _
"Atualizando registros", vbInformation, Me.Caption
'Declaração das Variaveis
Dim DB As Database
Dim rs As DAO.Recordset ' TblPrepostoTmp - onde estão os dados que serão importados
Dim rs1 As DAO.Recordset ' tbimportacao - para onde irão os dados a serem importados.
Set DB = CurrentDb()
'Filtra os dados da tabela de Origem e Define a tabela de Destino dos dados.
Set rs = DB.OpenRecordset("SELECT * FROM TblPrepostoTmp ")
Set rs1 = DB.OpenRecordset("tbimportacao")
'Inicia a Gravação dos dados na Tabela de Destino (Dim rs1 As DAO.Recordset ' tbimportacao ) ,repete até COPIAR todos os Registros que foram selecionados
Do While Not rs.EOF
'Inicia a Gravação dos dados na tbimportacao
rs1.AddNew
rs1("CONTRATO") = rs("contrato")
rs1("CPF") = rs("cpf")
rs1("DIAS ATRASO") = rs("diasAtraso")
rs1("OPERAÇÃO") = rs("operacao")
rs1("DIVIDA") = rs("divida")
rs1("AÇÃO") = rs("acao")
rs1("CONTATO") = rs("contato")
rs1("REVERTIDO") = rs("revertido")
rs1.Update
rs.MoveNext
Loop
'Ao Final Encerra as Conexões
rs.Close
rs1.Close
DB.Close
MsgBox "Operação concluída.", vbInformation, Me.Caption
'apaga temporarios da tblprepostotmp que recebeu a importação.
DoCmd.RunSQL "Delete * from TblPrepostoTmp"
Else
MsgBox "Não foi escolhido nenhum arquivo", vbInformation, Me.Caption
End If
PROC_EXIT:
Exit Sub
PROC_ERR:
DoCmd.Hourglass False
If Err.Number = 3011 Then
LocalXML = ""
MsgBox ("Arquivo inválido.")
Else
MsgBox Err.Description
End If
Resume PROC_EXIT
End Sub
6. Peço ajuda de vocês para corrigir este erro. Caso seja preciso, envio o BD e a planilha que busco importar.
Abraço!!!