Como usar ADOX com dados do Excel do Visual Basic ou VBA

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

Neste artigo

Sumário

As extensões de objetos de dados ActiveX para Data Definition Language e Security (ADOX) proporcionam ActiveX Data Objects (ADO) os recursos que estão presentes no Data Access Objects (DAO) para manipular os bancos de dados, tabelas, campos e outros objetos de banco de dados programaticamente. Desde o lançamento do Microsoft OLE DB Provider para Jet versão 4.0, que oferece suporte os drivers ISAM que usa o mecanismo do Jet com bancos de dados da área de trabalho diferente do Microsoft Access, os desenvolvedores do ADO foram capaz de usar o ADO e ADOX com pastas de trabalho do Microsoft Excel e planilhas.

No entanto, como uma planilha do Excel não é um banco de dados comum, o ADO tem algumas limitações quando ele é usado com o Excel. em particular, muitos métodos ADOX ou não funcionar ou fornecer resultados inesperados quando são utilizados com o Excel. Este artigo documenta muitas das limitações do ADOX e o Excel. Para obter informações adicionais sobre o uso do ADO com o Excel, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
257819Como usar o ADO com dados do Excel do Visual Basic ou VBA
Este artigo está dividido em seções a seguir:

Observação : O teste para este artigo foi feito no Microsoft Windows 2000 Server Service Pack 2 (SP2) com Microsoft Data Access Components (MDAC) 2.6 SP1, o Microsoft Visual Basic 6 SP5 e o Microsoft Excel 2002 (XP). Este artigo não pode confirmar ou Discuta as diferenças no comportamento que podem observar os usuários com diferentes versões do Windows, o MDAC, o Visual Basic ou o Excel.

Mais Informações

Catálogos do ADOX

No modelo de objeto ADOX, o catálogo representa o objeto um banco de dados ou, no caso do Excel, uma pasta de trabalho.
  • Você pode usar uma seqüência de conexão ou objeto ADO Connection para criar ou abrir um objeto de catálogo . O exemplo de código a seguir ilustra como abrir Book1.xls como um catálogo do ADOX:
    Dim cat As ADOX.Catalog
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    					
  • O objeto de catálogo tem um método Create mas não tem um método Delete .

Criando um catálogo

Você não pode usar o método Create do objeto ADOX catálogo para criar uma nova pasta de trabalho do Excel. Se você tentar fazer isso, você receber a seguinte mensagem de erro:
Operação não tem suporte para esse tipo de objeto.
No entanto, você pode criar uma nova pasta de trabalho do Excel especificando um novo nome de arquivo pasta de trabalho para o catálogo e acrescentando pelo menos uma tabela para o novo catálogo, usando as técnicas discutidas abaixo. Esse método será criar uma nova pasta de trabalho com apenas as planilhas que você criou como ADOX tabelas; em outras palavras, o número padrão de planilhas em branco especificado para uma pasta de trabalho nova do Excel pela caixa de diálogo Opções do Excel não será adicionado.

Tabelas do ADOX

O objeto ADOX tabela corresponde a um dos objetos Excel (ou seja, uma planilha ou um intervalo) que podem servir como recipiente para dados.

Criar uma tabela

Você pode usar ADOX para criar novas tabelas no Excel. Porque você não pode criar uma tabela sem também criar colunas, o exemplo de código aparece na seção "ADOX Columns".
  • Criar uma nova tabela ADOX cria uma nova planilha e um novo intervalo nomeado em nova planilha com o nome especificado. O novo intervalo nomeado se estende apenas os títulos de coluna. Por exemplo, se você criar uma tabela (planilha) denominada Minha_tabela com duas colunas, um intervalo nomeado MyTable, que é definido como MyTable! $ A $ 1: $ B $ 1, também é criado.
  • Você pode especificar um nome de tabela que contém um espaço; no entanto, ADOX substitui o espaço com um sublinhado nos nomes de planilha e o intervalo que você criar.
  • A nova planilha é criada como da última planilha na pasta de trabalho, após o número padrão de planilhas vazios que estão especificadas nas opções do Excel para uma nova pasta de trabalho.
  • Se você tentar criar uma nova tabela quando a pasta de trabalho é aberta no Excel, você receber a seguinte mensagem de erro:
    Erro não especificado.
  • Se você tentar criar uma tabela que não tem colunas definidas, parece bem-sucedida, mas na verdade, nada é criado.
  • Se você tentar alterar o nome de uma tabela existente, você receber a seguinte mensagem de erro:
    Operação não tem suporte para esse tipo de objeto.

Excluir uma tabela

Você não é possível usar ADOX para excluir uma tabela (planilha) ou o intervalo no Excel, nomeado ADOX criadas ele ou não.
  • Se você tentar excluir a planilha (MyTable $), ele aparece bem-sucedida sem erro, mas a planilha permanece na pasta de trabalho. Você pode chamar o método Delete repetidamente sem erro, mas não tem efeito.
  • Se você tentar excluir o intervalo (MyTable), ele aparece bem-sucedida sem erro, mas o intervalo permanece na pasta de trabalho. No entanto, se você tentar excluir o intervalo de uma segunda vez, você receberá erro 3265:
    Item não pode ser encontrado na coleção correspondente ao nome solicitado ou ordinal.
  • Se você tentar excluir um intervalo nomeado, deixa a definição do intervalo nomeado intactos, mas os dados no intervalo são excluídos.

Colunas do ADOX

ADOX colunas correspondem ao colunas ou campos em um banco de dados e claramente correspondem às colunas de uma planilha do Excel.

Tipos de dados ADO usados com o Excel

ADO reconhece seis tipos de dados em uma fonte de dados Excel que você pode usar para criar colunas:

  • adDouble, digite 5
  • adDate, digite 7
  • adCurrency, digite 6
  • adBoolean, digite 11
  • adVarWChar, digite 202
  • adLongVarWChar ("Memorando"), digite 203

Colunas em geral

  • Você pode acrescentar colunas adicionais a uma tabela criada anteriormente, desde que a tabela não contém quaisquer linhas de dados.
  • Você pode especificar nomes de colunas que incluem espaços.
  • ADOX sempre cria cabeçalhos de coluna que estiverem precedidos por uma aspa simples ('), por exemplo, 'F1,' Col1, ' Col2. No entanto, isso parece não causar um problema mais tarde porque o nome é recuperado sem as aspas.

Criar colunas ao criar uma tabela

Criar colunas funciona melhor quando é feito ao mesmo tempo que uma nova tabela é criada usando ADOX.

O código a seguir cria uma nova tabela (planilha) que contém duas colunas (um numérico e um texto):
    Dim cat As ADOX.Catalog
    Dim tbl As ADOX.Table
    Dim col As ADOX.Column
    Set cat = New ADOX.Catalog
    cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
	"Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"
    Set tbl = New ADOX.Table
    tbl.Name = "TestTable"
    Set col = New ADOX.Column
    With col
        .Name = "Col1"
        .Type = adDouble
    End With
    tbl.Columns.Append col
    Set col = Nothing
    Set col = New ADOX.Column
    With col
        .Name = "Col2"
        .Type = adVarWChar
    End With
    tbl.Columns.Append col
    cat.Tables.Append tbl
				

Criar colunas em uma planilha existente

Acrescentar colunas para um já existentes, planilha vazia gera resultados incomuns. Quando a primeira coluna ADOX é acrescentada à coleção de colunas da tabela, ADOX primeiro cria um cabeçalho de coluna chamado F1 na coluna A da planilha e cria o novo cabeçalho de coluna ADOX na coluna B da planilha. Portanto, código ADOX que anexa duas novas colunas resulta em três cabeçalhos de coluna. Se você tentar excluir esta indesejado, primeira coluna da coleção colunas antes de acrescentar a primeira coluna ADOX, parece ser bem-sucedida, mas a coluna indesejada é criada mesmo assim.

Excluindo colunas

Não é possível excluir uma coluna de uma tabela ADOX no Excel.
  • Se a coluna não tiver nenhum dado, isso parece bem-sucedida sem erro, mas o cabeçalho de coluna e de coluna permanecem.
  • Se a coluna contiver dados, a operação de exclusão falhará com a seguinte mensagem de erro:
    Operação inválida.

Alterar o tipo de dados de uma coluna existente

Depois de uma coluna foi acrescentada a uma tabela, se você tentar definir sua propriedade .Type como um tipo de dados diferentes, você receber a seguinte mensagem de erro:
Operação não é permitida neste contexto.

Adicionar dados ao Excel tabelas e colunas

Ao você está testando código ADO com o Excel no ambiente de design do Visual Basic, a primeira vez que você executar uma operação de conjunto de registros, você receberá a seguinte mensagem de erro:
Selecionar o sistema operacional não dá suporte à seqüência de agrupamento.
Você pode desconsiderar essa mensagem de erro; esse erro não ocorre depois que o aplicativo é compilado. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
246167PROBLEMA: Agrupando seqüência erro inicial ADODB Recordset na primeira vez contra um Excel XLS

Adicionar dados a colunas do Excel criados por ADOX

Quando você usa ADO para inserir ou modificar dados em tabelas e colunas que você criou no Excel usando ADOX, o ADO respeita os tipos de dados que você especificou para essas colunas, embora seja não limpar onde essas informações são armazenadas.
  • Todos os valores de seqüência de caracteres de texto são armazenados precedido por uma aspa simples. No entanto, isso parece não causar um problema mais tarde porque o valor é recuperado sem as aspas.
  • Se você tentar inserir uma seqüência de caracteres de texto em uma coluna que é definida como numérico ou um número em uma coluna de texto, você receberá 80040e21 de erro:
    Operação de várias etapas gerou erros. Verifique cada valor de status.

Adicionar dados a colunas normal do Excel

Quando você usa ADO para inserir ou modificar dados em planilhas do Excel ou intervalos que não são criados ou modificados usando ADOX, não há restrições são aplicadas no tipo de dados que você pode inserir.
  • Seqüências de caracteres de texto são armazenadas sem as aspas únicas anterior.
  • Os números aparecem alinhadas à esquerda. No Excel 2002, os números são sinalizados com a marca inteligente que avisa "Números armazenados como texto". Isso pode causar um problema posteriormente quando você estiver trabalhando com os dados, especialmente se os dados foi armazenados no Excel para análise numérico.

Usando SQL CREATE, ALTER e DROP instruções

Você pode executar instruções de DDL (linguagem de definição dados) de SQL Microsoft como CREATE, ALTER e DROP nos objetos de banco de dados do Excel através de uma conexão do ADO para produzir os mesmos resultados como os métodos ADOX correspondentes que são descritos acima.

Conclusão

  • O ADOX funciona melhor com o Excel quando uma nova tabela e suas colunas são criadas ao mesmo tempo.
  • ADO funciona melhor com dados do Excel quando os dados são armazenados em uma planilha é criada usando ADOX.

Propriedades

ID do artigo: 303814 - Última revisão: terça-feira, 13 de julho de 2004 - Revisão: 2.2
A informação contida neste artigo aplica-se a:
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
Palavras-chave: 
kbmt kbdatabase kbhowto kbiisam KB303814 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 303814

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com