ExcelADO mostra como usar o ADO para ler e gravar dados em pastas de trabalho do Excel

Traduções deste artigo Traduções deste artigo
ID do artigo: 278973 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

O exemplo ExcelADO.exe mostra como você pode usar o ADO (ActiveX Data Objects) em conjunto com o Microsoft Jet OLE DB 4.0 Provider para ler e gravar dados em pastas de trabalho do Microsoft Excel.

Mais Informações

O seguinte arquivo está disponível para download no Centro de Download da Microsoft:
ExcelADO.exe
Data de lançamento: 12 de dezembro de 2000

Para obter informações adicionais sobre como baixar os arquivos de Suporte da Microsoft, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento da Microsoft:
119591 Como obter os arquivos de suporte da Microsoft nos serviços online
A Microsoft examinou esse arquivo em busca de vírus. A Microsoft utilizou o mais recente software de detecção de vírus disponível na data em que o arquivo foi publicado. O arquivo está armazenado em servidores de segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo.

Por que Usar o ADO?

Usar o ADO para transferir ou recuperar dados em uma pasta de trabalho do Excel propicia a você, desenvolvedor, várias vantagens em relação à Automação do Excel:
  • Desempenho. O Microsoft Excel é um servidor ActiveX fora do processo. O ADO é executado em processo, além de economizar a sobrecarga causada por chamadas fora do processo.
  • Escalabilidade. Para aplicativos de Web, nem sempre se deseja automatizar o Microsoft Excel. O ADO lhe oferece uma solução mais escalável para lidar com dados de uma pasta de trabalho.
Ele pode ser estritamente usado para transferir dados não-processados para uma pasta de trabalho. Você não pode usar o ADO para aplicar formatações ou fórmulas às células. No entanto, você pode transferir dados para uma pasta de trabalho que esteja previamente formatada e que tenha essa formatação mantida. Se precisar de formatação "condicional" após a inserção dos dados, você pode fazer isso formatando com a Automação ou uma macro diretamente na pasta de trabalho.

Características do Jet OLE DB Provider para Pastas de Trabalho do Excel

O mecanismo de banco de dados Microsoft Jet pode ser usado para acessar dados em outros formatos de bancos de dados, como as pastas de trabalho do Excel, por meio de drivers ISAM (Indexed Sequential Access Method) instáveis. Para poder abrir formatos externos suportados pelo Microsoft Jet 4.0 OLE DB Provider, você especifica o tipo de banco de dados nas propriedades avançadas da conexão. O Jet OLE DB Provider dá suporte aos seguintes tipos de banco de dados do Microsoft Excel:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
OBSERVAÇÃO: Use o tipo de banco de dados Excel 5.0 para pastas de trabalho do Microsoft Excel 5.0 e do 7.0 (95) e o Excel 8.0 para pastas de trabalho do Microsoft Excel 8.0 (97) e do 9.0 (2000). O exemplo ExcelADO.exe usa pastas de trabalho do Excel nos formatos do Excel 97 e do Excel 2000.

Os seguintes exemplos mostram uma conexão ADO com uma pasta de trabalho do Excel 97 (ou 2000):
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Book1.xls"
    '....
    .Close
End With
				
-ou-
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
Tabela de Convenções Referentes aos Nomes

Há várias formas de referenciar uma tabela (ou intervalo) em uma pasta de trabalho do Excel:
  • Usar o nome da pasta seguido de um cifrão (por exemplo, [Sheet1$] ou [My Worksheet$]). Uma tabela de pasta referenciada dessa forma consiste no uso de todo o intervalo da pasta de trabalho.
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
    					
  • Usar um intervalo com nome definido (por exemplo, [Tabela1]).
    oRS.Open "Select * from Table1", oConn, adOpenStatic
    					
  • Usar um intervalo com um endereço específico (por exemplo, [Sheet1$A1:B10]).
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
    					
Cabeçalhos de Tabela

Nas pastas de trabalho do Excel, a primeira linha de um intervalo é considerada a linha de cabeçalho (ou nomes do campo). Se o primeiro intervalo não contiver cabeçalhos, você pode especificar HDR=NO nas propriedades avançadas da sua seqüência de conexão. Se a primeira linha não tiver cabeçalhos, o OLE DB provider nomeia automaticamente os campos para você (em que F1 representaria o primeiro campo, F2 representaria o segundo e assim por diante).

Tipos de Dados

Ao contrário de um banco de dados tradicional, não há uma forma direta de especificar os tipos de dados para as colunas das tabelas do Excel. Na verdade, o OLE DB provider verifica um número limitado de linhas em uma coluna para "adivinhar" o tipo de dados contidos no campo. O número de linhas a serem verificadas é de oito (8); você pode alterar esse número, especificando um valor entre um (1) e dezesseis (16) para a configuração MAXSCANROWS nas propriedades avançadas da sua seqüência de conexão.

Arquivos Inclusos no Exemplo

O arquivo ExcelADO.exe contém um projeto EXE Padrão do Visual Basic Standard, ASP (Active Server Pages), Pastas de trabalho do Excel 97 e do Excel 2000 que funcionam como modelos e um banco de dados do Microsoft Access 2000. Os arquivos são:

Arquivos de Projeto EXE Padrão do Visual Basic
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Active Server Pages
  • EmpData.asp
  • Orders.asp
Pastas de Trabalho do Microsoft Excel
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Banco de dados do Microsoft Access
  • Data.mdb

Como Usar o Exemplo

Extraia o conteúdo do arquivo .exe para uma pasta.

Para usar o projeto do Visual Basic:
  1. No Visual Basic, abra o arquivo ExcelADO.vbp.
  2. No menu Project, selecione References, definindo-as para Microsoft ADO Ext. for DDL and Security e Microsoft ActiveX Data Objects Library. Como esse código de exemplo funciona tanto com o ADO 2.5 quanto com o ADO 2.6, selecione a versão mais apropriada para o seu computador.
  3. Pressione F5 para executar o programa. Um formulário de demonstração é exibido.
  4. Clique em Sample 1. Esse exemplo cria uma cópia de OrdersTemplate.xls. Ele usa o ADO para se conectar à pasta de trabalho e abre um Recordset em uma tabela que esteja no intervalo definido na pasta de trabalho. O nome do intervalo é Orders_Table. Ele usa os métodos AddNew/Update do ADO para adicionar registros (ou linhas) ao intervalo definido na pasta de trabalho. Quando as linhas forem adicionadas, a Conexão do ADO é fechada e a pasta de trabalho é exibida no Microsoft Excel. Execute estas etapas para fazer isso:
    1. No menu Inserir do Excel, selecione Nome, e Definir.
    2. Na lista de nomes definidos, selecione Orders_Table. Observe que o nome definido aumentou porque foram incluídos novos registros. O nome definido é usado em conjunto com a função OFFSET do Excel para computar o total de dados adicionados à pasta de trabalho.
    3. Feche o Microsoft Excel e retorne ao Visual Basic.
  5. Clique em Sample 2. Esse exemplo cria uma cópia de EmpDataTemplate.xls. Ele usa o ADO para se conectar à pasta de trabalho e usa o método Execute da conexão ADO para inserir dados (INSERT INTO in SQL) na pasta de trabalho. Os dados são adicionados em intervalos (ou tabelas) definidos da pasta de trabalho. Quando os dados são transferidos, a conexão é fechada e a pasta de trabalho resultante é exibida no Excel. Depois de analisar a pasta de trabalho, feche o Microsoft Excel e retorne ao Visual Basic.

  6. Clique em Sample 3. Esse exemplo cria uma cópia de ProductsTemplate.xls. Ele usa a biblioteca de objetos Microsoft ADO Extensions 2.1 for DDL and Security (ADOX) para adicionar uma nova tabela (ou planilha) à pasta de trabalho. Obtém-se um Recordset ADO para a nova tabela e os dados são adicionados, usando-se os métodos AddNew/Update. Quando as linhas forem adicionadas, a Conexão do ADO é fechada e a pasta de trabalho é exibida no Excel. A pasta de trabalho contém o código em macro do Visual Basic for Applications (VBA) no evento Open da pasta de trabalho. A macro é executada quando a pasta de trabalho é aberta; se houver uma nova pasta "Products", o código formata a planilha e a macro é excluída. Essa técnica apresenta uma forma do desenvolvedor Web deixar o código de formatação longe do servidor da Web e próximo do cliente. Um aplicativo da Web poderia transmitir ao cliente uma pasta de trabalho formatada com dados e permitir que o código da macro executasse todas as formatações "condicionais" provavelmente impossíveis em um modelo executado no cliente.

    OBSERVAÇÃO: Para examinar o código da macro, observe o módulo ThisWorkbook do VBAProject para ProductsTemplate.xls.

  7. Clique em Sample 4. Esse exemplo produz os mesmos resultados de Sample 1, mas a técnica usada para transferir os dados é um pouco diferente. No Sample 1, os registros (ou linhas) são adicionados à pasta de trabalho uma por vez. O Sample 4 adiciona os registros em grande volume, anexando a tabela do Excel a um banco de dados do Access e executando uma consulta anexa (ou INSERT INTO..SELECT FROM) para anexar registros a partir de uma tabela no Access para a do Excel. Depois que a transferência estiver concluída, a tabela do Excel é desanexada do banco de dados do Access, e a pasta de trabalho resultante é exibida no Excel. Feche o Excel e retorne ao Visual Basic.

  8. O último exemplo mostra como você pode ler os dados a partir de uma pasta de trabalho do Excel. Selecione uma tabela na lista suspensa, e clique em Sample 5. A janela Immediate mostra o conteúdo da tabela selecionada. Se você selecionar toda a pasta de trabalho ("Sheet1$" ou "Sheet2$") para a tabela, a janela Immediate mostra o conteúdo do intervalo usado na pasta de trabalho. Lembre-se de que o intervalo usado não precisa começar na linha 1, coluna 1 da pasta de trabalho. O intervalo usado começa na célula do canto superior esquerdo da pasta de trabalho que contém os dados.

    Se você selecionar um determinado intervalo ou usar um já definido, a janela Immediate mostra o conteúdo apenas desse intervalo.
Para usar as ASP (Active Server Pages):
  1. Crie uma nova pasta chamada ExcelADO no diretório inicial do seu servidor da Web. Observe que o caminho padrão para o diretório é C:\InetPut\WWWRoot.
  2. Copie os seguintes arquivos para a pasta criada por você na etapa anterior:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. Os scripts ASP desse exemplo cria cópias dos exemplos da pasta de trabalho com o método Copy de FileSystemObject. Para o método Copy ser concluído com êxito, o cliente que está acessando o script precisa ter acesso Gravação à pasta que contém o ASP.
  4. Vá até Orders.asp (ou seja, http://Servidor/ExcelADO/Orders.ASP), e observe que o navegador exibe uma pasta de trabalho do Excel similar à do Sample 1 no Visual Basic.
  5. Vá até EmpData.asp (ou seja, http://Servidor/ExcelADO/EmpData.ASP), e observe que o navegador exibe uma pasta de trabalho do Excel similar à do Sample 2 no Visual Basic.
(c) Microsoft Corporation 2000, Todos os Direitos Reservados. Contribuições de Lori B. Turner, da Microsoft Corporation.

Referências

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de Dados de Conhecimento da Microsoft:
195951 COMO: Consultar e atualizar os dados em Excel usando o ADO do ASP
194124 PRB: Valores do Excel Retornados como NULL Usando OpenRecordset do DAO
193998 COMO: Ler e Exibir Dados Binários em ASP
247412 INFO: Métodos para Transferir Dados do Visual Basic para o Excel
257819 COMO: Usar ADO com Dados do Excel a Partir do Visual Basic ou do VBA

Propriedades

ID do artigo: 278973 - Última revisão: sexta-feira, 18 de novembro de 2005 - Revisão: 6.0
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Active Server Pages 4.0
Palavras-chave: 
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973

Submeter comentários