Font Size

Profile

Menu Style

Cpanel

25Junho2017

MS Office Gurus

Onde os desenvolvedores Office se encontram

  • Criar conta
    *
    *
    *
    *
    *
    *

    Campos marcados com asterisco (*) são obrigatórios.

Mensagem
  • Kunena is not installed or the installed Kunena version is not supported. The plug-in has now been disabled. Please install/upgrade Kunena to version 1.7 for the Kunena Discuss Plug-in to function properly.

Como usar o Microsoft.ACE.OLEDB.12.0

Neste breve artigo falarei sobre o uso do Microsoft.ACE.OLEDB.12.0 para acessar dados de uma planilha Excel. Até a versão 2003 (Excel 97-2003), usávamos a versão Excel 8.0 para acessar os dados de uma planilha Excel utilizando o ActiveX Data Objetcs (ADO). A partir do Office 2007, a Microsoft adotou o ACE para acesso de dados ao invés do JET.

Para o exemplo, você precisará referenciar as seguintes bibliotecas:

  •  ADO
  •  Windows Script Host Model

 Para referenciar tais bibliotecas, acesso o VBE (Visual Basic Editor) e no menu Referências, busque na lista pelas bibliotecas listadas acima

O Windows Script Host Model será utilizado para abrir os arquivos Excel para importação dos dados. Já o ADO será utilizado para abrir a conexão de dados bem como o recordset (conjunto de registros).

No Exemplo, queremos abrir tanto arquivos com extensão XLS (Excel 97-2003) e XLSX (Excel 2007 e 2010). Neste caso, o código ficará como:

Abaixo, exemplo do código:

Sub AccessandoExcelComoBaseDeDados()
    
'   requer refs aos objetos Windows Script Host Model e ADO
    
    Const sNomePasta        As String = "\ARQUIVOS_DADOS"
    
    Dim objFSO              As New FileSystemObject
    Dim objFolder           As Folder
    Dim objFile             As File
    
    Dim objConn             As New ADODB.Connection
    Dim objRs               As New ADODB.Recordset
    
    
    Set objFolder = objFSO.GetFolder(ThisWorkbook.Path & sNomePasta)
    
    For Each objFile In objFolder.Files
        Select Case UCase(Right(objFile.Name, 4))
            Case "XLSX"
                objConn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                   "Data Source=" & objFile.Path & ";" & _
                   "Extended Properties=""Excel 12.0 Macro;HDR=Yes;"";"
                
                objRs.Open "SELECT * FROM [Sheet1$];", objConn, adOpenKeyset, adLockOptimistic
                
                For i = 1 To objRs.Fields.Count
                    ThisWorkbook.Sheets(2).Cells(1, i).Value = objRs.Fields(i - 1).Name
                Next i
                    ThisWorkbook.Sheets(2).Range("A2").CopyFromRecordset objRs
                objRs.Close
                objConn.Close
                   
            Case ".XLS"
                objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & objFile.Path & ";" & _
                "Extended Properties=""Excel 8.0;HDR=Yes"";"
            
                objRs.Open "SELECT * FROM [DADOS$]", objConn, adOpenKeyset, adLockOptimistic
                
                For i = 1 To objRs.Fields.Count
                    ThisWorkbook.Sheets(1).Cells(1, i).Value = objRs.Fields(i - 1).Name
                Next i
                    ThisWorkbook.Sheets(1).Range("A2").CopyFromRecordset objRs
                objRs.Close
                objConn.Close
        End Select
    
    Next objFile
    
On Error Resume Next
    objRs.Close
    objConn.Close
    
    Set objRs = Nothing
    Set objConn = Nothing
    
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
    
    
End Sub