Notifications
Clear all

Transferir dados do Excel para o Acess

3 Posts
2 Usuários
0 Reactions
1,558 Visualizações
(@tarcelles)
Posts: 0
New Member
Topic starter
 

alguem poderia informar um expemplo ou uma rotina que seja capaz de importar dados do excel para o acess, em massa,a planilha toda de uma vez so. Preciso muito disso.

Obrigado, Bom dia.

 
Postado : 09/10/2015 6:24 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Quando diz "importar do excel para o access" entendo que está na aplicação access e deseja importar um arquivo excel.
Se assim for veja a rotina abaixo disponibilizada no forum maximo Access repositorio de Codigos ( http://www.maximoaccess.com/ )

Código que importa de uma só vez, todas as folhas de excel que estiverem em c: para a tabela

Private Sub SeuBotao_Click()
Dim strPathFile As String, strFile As String, strPath As String
Dim strTable As String
Dim blnHasFieldNames As Boolean
blnHasFieldNames = True
strPath = "C:" ' drive onde se situa o seu documento excel
strTable = "tblExemplo" 'nome da tabela no seu banco
strFile = Dir(strPath & "temp.xls") 'nome do seu excel, se mudar para "*.xls" importa todas as folhas excel _
que estiverem em C: para a tabela do banco.
Do While Len(strFile) > 0
strPathFile = strPath & strFile
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
strTable, strPathFile, blnHasFieldNames
strFile = Dir()
Loop
End Sub

Este codigo importa o Excel para o Access, mas cria tabelas separadas com o nome dos Sheets e com todos os seus dados.

Private Sub SeuBotao_Click()
Dim appExcel As Excel.Application
Dim wb As Excel.Workbook
Dim sh As Excel.Worksheet
Dim strValue As String
Set appExcel = CreateObject("Excel.Application")
Set wb = appExcel.Workbooks.Open("C:temp.xls") 'nome do seu excel e seu diretorio
For Each sh In wb.Sheets
Debug.Print sh.Name
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "tbl_" & sh.Name, "C:temp.xls", True, sh.Name & "!"
Next
wb.Close
appExcel.Quit
On Error GoTo 0
Exit Sub
End Sub

Este importa todos os dados de todos os sheets para a mesma tabela:

Private Sub SeuBotao_Click()
Dim appExcel As Excel.Application
Dim wb As Excel.Workbook
Dim sh As Excel.Worksheet
Dim strValue As String
Dim strTable As String
strTable = "tblExemplo" 'nome da tabela no seu banco
Set appExcel = CreateObject("Excel.Application")
Set wb = appExcel.Workbooks.Open("C:temp.xls") 'nome do seu excel e seu diretorio
For Each sh In wb.Sheets
Debug.Print sh.Name
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, "C:temp.xls", True, sh.Name & "!"
Next
wb.Close
appExcel.Quit
On Error GoTo 0
Exit Sub
End Sub

Ou este, especificando o Range:

Private Sub SeuBotao_Click()
Dim aaa As Excel.Workbook
Dim bbb As Excel.Worksheet
Dim xl As Excel.Application
Dim strTabela As String
strTabela = "tblExemplo" 'nome da tabela no seu banco
Set xl = New Excel.Application
Set aaa = xl.Workbooks.Open("C:temp.xls") 'nome do seu excel e seu diretorio

xl.Calculation = xlCalculationManual
ActiveWorkbook.PrecisionAsDisplayed = False
xl.ErrorCheckingOptions.BackgroundChecking = False
With aaa
For Each bbb In .Worksheets
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTabela, "C:temp.xls", True, bbb.Name & "!A1:AQ500"
Next
End With
xl.Calculation = xlCalculationAutomatic
ActiveWorkbook.PrecisionAsDisplayed = True
xl.ErrorCheckingOptions.BackgroundChecking = True
aaa.Close False
End Sub
 
Postado : 10/10/2015 3:51 pm
(@tarcelles)
Posts: 0
New Member
Topic starter
 

Obrigado Reinaldo, funcionou Perfeitamente.

Só ressaltando que para funcionar é preciso marcar nas referências o "pluguin" do Excel.

 
Postado : 13/10/2015 6:29 am