Com base noutro exemplo aqui do fórum (que faz sincronização dos dados), adaptei para o que pretende.
Veja o código:
- Código:
Function fncLigarExcel() As String
'Álvaro Teixeira -2017
' Requer referencia a Microsoft Office xx.0 Object Library
On Error GoTo PROC_ERR
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Title = "selecione o ficheiro"
fd.InitialFileName = CurrentProject.Path
fd.Filters.Add "Ficheiro XLS", "*.xls", 1
fd.Show
If (fd.SelectedItems.Count > 0) Then
'inicio caixa de abertura para selecionar excel
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 = "ExcelLigado"
'inicio para limpar ligação existente
Dim db As Database
Dim Tbl As TableDef
Set db = CurrentDb()
' Caso exista ligação anterior apaga
For Each Tbl In db.TableDefs
If Tbl.Name = strTable Then DoCmd.DeleteObject acTable, strTable
Next Tbl
'instrução ligar/vincular excel
DoCmd.TransferSpreadsheet acLink, 8, strTable, strPathFile, True, ""
'Verifica se é para adicionar à tabela
If Me.btAdiciona = True Then
DoCmd.RunSQL "INSERT INTO tbl_Empregados SELECT ExcelLigado.* FROM ExcelLigado;"
MsgBox "Efetuada ligação e adicionado à Tabela dados do ficheiro Excel:" & vbLf & strPathFile, vbInformation, ""
Else
MsgBox "Efetuada ligação ao ficheiro Excel:" & vbLf & strPathFile, vbInformation, ""
End If
Else
MsgBox "Não foi escolhido nenhum ficheiro Excel.", vbInformation, ""
End If
PROC_EXIT:
Exit Function
PROC_ERR:
DoCmd.Hourglass False
If Err.Number = 3011 Then
MsgBox "Ficheiro inválido.", vbInformation, ""
Else
MsgBox Err.Number & "-" & Err.Description, vbCritical, ""
End If
Resume PROC_EXIT
End Function
Segue anexo exemplo.
Abraço
- Anexos
- LigarExcelAdionarDadosTabela.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (37 Kb) Baixado 54 vez(es)