Notifications
Clear all

Inserir conteúdo de planilha numa tabela do banco de dados

3 Posts
1 Usuários
0 Reactions
554 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Oi pessoal,

Estou com uma dúvida e tenho a certeza que alguém aqui me ajudará.
Vou ser o mais direto possível:
Tenho uma tabela numa planilha, obviamente com a mesma estrutura de uma tabela na base access

Preciso jogar o conteúdo da planilha no banco, mas não quero loopar cada linha da planilha e disparar um INSERT() diferente.

Como eu sei que há meios de transformar conteúdo de planilha em recordset com uma linha de código, também sei que há meios de devolver o recordset numa planilha também com uma linha de código, estou querendo saber como inserir dados no banco, também com uma linha de código.

Deve ser simples. Como faço?

FF

 
Postado : 14/02/2014 12:57 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!

Mas seria do Excel para o Access ou Access para o Excel ?

Sub CraidoXenau()
'Autor: Henry David Thoreau
Dim wb As Workbook
Dim AC As Object
Dim ret As Byte
Const SAVE_PATH As String = "C:myTempAccessUpload.xls"
    
    Worksheets("Sheet1").Copy
    Set wb = ActiveWorkbook
    Application.DisplayAlerts = False
    If CreateObject("Scripting.FileSystemObject").FileExists(SAVE_PATH) Then
        Kill SAVE_PATH
    End If
    wb.SaveAs SAVE_PATH, 56
    wb.Close False
    Application.DisplayAlerts = True
    
    Set AC = CreateObject("Access.Application")
    With AC
        .OpenCurrentDatabase "C:myTempdb1.mdb", False
        ret = .Run("GetXLData")
    End With

End Sub

########

Public Function GetXLData() As Byte
Dim ret As Byte

    On Error GoTo ErrHandler
    ret = 1
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "Table1", "C:myTempAccessUpload.xls", True
    ret = 0
    
ErrHandler:
GetXLData = ret
End Function

Leia:
http://www.rondebruin.nl/win/s5/win001.htm

Att

 
Postado : 16/02/2014 4:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Nomeie uma range do Excel com duas colunas e umas 10 linhas como "tblLojas" (como exemplo) e use esse código

Public Function ConsultaRangeExcel() As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.ConnectionString = _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=Excel 8.0"

cn.Open
strSQL = "select tbllojas.PRAÇA,tbllojas.codloja from tbllojas where tbllojas.PRAÇA in ('SP')"
Set rs = cn.Execute(strSQL)
rs.MoveFirst
Do Until rs.EOF
Debug.Print rs(0) & "-" & rs(1)
rs.MoveNext
lin = lin + 1
Loop
End Function

Até aqui ele faz um recordset e deixa na memoria (exibe os dados no janela verificação imediata), agora é só criar um conexão com um bd em Access e gravar os dados lá.

Qualquer coisa me avise, que faço essa parte também.

 
Postado : 18/02/2014 7:23 am