 Visual 
Basic - Gravando os dados 
de uma planilha Excel no Access (Criando a tabela usando ADOX)
Visual 
Basic - Gravando os dados 
de uma planilha Excel no Access (Criando a tabela usando ADOX)Suponha que você tenha uma planilha Excel e que precise copiar os dados desta planilha em uma tabela de um banco de dados Access.
Como você faria ??
Quer uma sugestão ?? Use SQL . Sim , com uma linha de comando você grava os dados da planilha na tabela do seu banco de dados Access.
Esta pagando para ver ?? Então veja :
| Primeiro você deve escolher 
      a planilha que cujos dados deseja gravar. Eu vou usar uma planilha muito 
      simples criada no Excel com o nome de teste.xls e salva na pasta c:\teste. Abaixo vemos a planilha. 
 | 
A seguir você precisa saber em qual banco de dados vai gravar os dados e o nome da tabela na qual os dados vão ser gravados.
Vamos usar um código para verificar se o banco de dados que você informou existe , se ele não existir , vamos criar o banco de dados e quando da gravação dos dados da planilha a tabela também será criada.
| - Inicie um novo projeto no 
      VB e no formulário padrão insira os seguintes controles : 
 Conforme figura ao lado. |  | 
Vamos ao código :
1- Antes de mais nada faça a referência no seu projeto as livrarias - ADO e ADOX ,conforme abaixo :
|  | - Vamos usar a 
      ADOX para criar o banco de dados caso seja necessário 
      usando o objeto Catalog. Obs : Para sabe mais leia o artigo - ADOX - Gerenciando o seu banco de dados. | 
2- Na seção General Declarations vamos declarar as variáveis visíveis em todo o formulário :
| Dim Origem As String Dim Destino As String Dim oCon As ADODB.Connection Dim rst As ADODB.Recordset | 
3- No evento Click do botão - command1 - Gravar no BD - insira o código abaixo.
| Private Sub Command1_Click() Dim cSQL As String On Error GoTo trata_erro 'verifica se a planilha existe If Dir(Origem) = "" Then MsgBox "O arquivo origem " & Origem & " Não existe !!! ", vbCritical, "Erro" Exit Sub End If 'verifica se o banco de dados existe , se não existir , cria-o If Dir(Destino) = "" Then Dim oCat As ADOX.Catalog Set oCat = New ADOX.Catalog oCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Destino End If 'abre uma conexão com a planilha do Excel Set oCon = New ADODB.Connection With oCon .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & Origem & ";" & "Extended Properties=Excel 8.0" .Open 'monta a instrução SQL que irá gravar os dados na tabela cSQL = "SELECT * INTO [" & txtTabela.Text & "] " & _ "IN '" & Destino & "' " & " FROM [Plan1$]" .Execute cSQL MsgBox "Dados gravados com Sucesso em - " & Destino & " - na Tabela : " & txtTabela.Text .Close End With Exit Sub trata_erro: MsgBox Err.Description & " - " & Err.Number Exit Sub End Sub | 
4- No evento Click do botão de comando - command2 - Ver Dados >> - insira o código abaixo :
| Private Sub Command2_Click()
'expande o formulário para exibir os dados
With Command2
 If .Caption = "&Ver Dados >>" Then
    Me.Width = 4800
    Me.Height = 4425
    .Caption = "<< &Ver Dados"
 Else
    Me.Width = 4800
    Me.Height = 2115
    .Caption = "&Ver Dados >>"
 End If
End With
'abre uma conexao e o recordset
Set oCon = New ADODB.Connection
Set rst = New ADODB.Recordset
oCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Destino
List1.Clear
rst.CursorLocation = adUseClient
rst.Open "Select * from " & txtTabela.Text, oCon, adOpenStatic, adLockBatchOptimistic, adCmdText
'exibe os dados - dois campos - no controle listbox
Do Until rst.EOF
  List1.AddItem rst(0) & "  " & rst(1)
  rst.MoveNext
  Loop
rst.Close
End Sub | 
5- No evento Load do formulário digite o código abaixo :
| Private Sub Form_Load() 'atribui os nomes da origem e do destino as variáveis Origem = txtOrigem.Text Destino = txtDestino.Text End Sub | 
Quando você executar o projeto e clicar no botão - Gravar no BD - vai ver o formulário da figura 11 ; quando clicar no botão - Ver Dados>> - vai ver o formulário da figura 2 :
|  |  | 
| Figura 1 | Figura 2 | 
A instrução SQL que faz todo o serviço é a seguinte :
SELECT * INTO [" & txtTabela.Text & "] " & "IN '" & Destino & "' " & " FROM [Plan1$]
Onde temos :
| Veja os 
    Destaques e novidades do SUPER DVD Visual Basic 
(sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? 
 Quer aprender C# ?? 
 Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? | 
  Gostou ?   Compartilhe no Facebook
Compartilhe no Facebook
  
 Compartilhe no Twitter
 
Compartilhe no Twitter 
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a 
Objetos com VB .NET
