Você está offline; aguardando reconexão

Como utilizar ADOX com dados do Excel a partir do Visual Basic ou VBA

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 303814
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
As extensões de objectos de dados ActiveX da linguagem de definição de dados e Security (ADOX) fornece aos programadores de ActiveX Data Objects (ADO) as capacidades que estão presentes no Data Access Objects (DAO) para manipular programaticamente bases de dados, tabelas, campos e outros objectos de base de dados. Desde o lançamento do Microsoft OLE DB Provider para Jet versão 4.0, que suporta os controladores ISAM que utiliza o motor Jet com bases de dados do ambiente de trabalho diferente do Microsoft Access, os programadores de ADO foram conseguir utilizar o ADO e ADOX com o Microsoft Excel livros e folhas de cálculo.

No entanto, uma vez que uma folha de cálculo do Excel não é uma base de dados normal, o ADO tem algumas limitações quando utilizado com o Excel. em particular, vários métodos ADOX ou não funcionar ou não devolver resultados inesperados quando utilizados com o Excel. Este artigo documenta muitas das limitações do ADOX e o Excel. Para obter informações adicionais sobre a utilização do ADO com o Excel, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
257819Como utilizar ADO com dados do Excel a partir do Visual Basic ou VBA
Este artigo está dividido nas seguintes secções:

Nota : O teste para este artigo foi efectuado 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 debater diferenças no comportamento que os utilizadores poderão observar com diferentes versões do Windows, o MDAC, o Visual Basic ou o Excel.
Mais Informação

Catálogos ADOX

No modelo de objectos ADOX, a objecto ' catálogo representa uma base de dados ou, no caso de um livro do Excel.
  • Pode utilizar uma cadeia de ligação de objecto ou do ADO ligação para criar ou abrir um objecto de catálogo . O código de exemplo seguinte ilustra a abrir Livro1.xls como um catálogo de ADOX:
    Dim cat As ADOX.CatalogSet cat = New ADOX.Catalogcat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _    "Data Source=" & App.Path & "\book1.xls;Extended Properties=Excel 8.0"					
  • O objecto de catálogo tem um método de criar mas não tem um método delete .

Criar um catálogo

Pode utilizar o método Create do objeto ADOX catálogo para criar um novo livro do Excel. Se tentar fazê-lo, receberá a seguinte mensagem de erro:
Operação não é suportada para este tipo de objecto.
No entanto, pode criar um novo livro do Excel especificando um novo nome de livro para o catálogo e acrescentar pelo menos uma tabela para o novo catálogo, utilizando as técnicas abaixo discutidas. Este método vai criar um novo livro com apenas as folhas de cálculo que criou como tabelas ADOX; por outras palavras, o número predefinido de folhas em branco especificado para um novo livro do Excel através da caixa de diálogo Opções do Excel não será adicionado.

Tabelas ADOX

O objecto ADOX tabela corresponde a qualquer um dos objectos de Excel (ou seja, uma folha de cálculo ou um intervalo) que podem servir como um contentor para dados.

Criar uma tabela

Pode utilizar ADOX para criar novas tabelas no Excel. Uma vez que não é possível criar uma tabela sem também criar colunas, é apresentado o código de exemplo na secção "ADOX Columns".
  • Criar uma nova tabela ADOX cria uma nova folha de cálculo e um novo intervalo com nome da nova folha de cálculo com o nome especificado. O novo intervalo com nome abrange apenas os títulos de coluna. Por exemplo, se criar uma tabela (folha de cálculo) com o nome MinhaTabela com duas colunas, um intervalo com nome MinhaTabela, que é definido como AMinhaTabela! $ A $ 1: $ B $ 1, também é criado.
  • Pode especificar um nome de tabela que inclua um espaço; no entanto, ADOX substitui o espaço por um carácter de sublinhado os nomes de folha de cálculo e o intervalo que tenha criado.
  • Nova folha de cálculo é criada como da última folha no livro, após o número de folhas vazias que são especificadas nas opções do Excel para um novo livro predefinido.
  • Se tentar criar uma nova tabela quando o livro é aberto no Excel, receberá a seguinte mensagem de erro:
    Erro não especificado.
  • Se tentar criar uma tabela que não tem colunas definidas, parece ser concluída com êxito, mas na realidade nada é criado.
  • Se tentar alterar o nome de uma tabela existente, receberá a seguinte mensagem de erro:
    Operação não é suportada para este tipo de objecto.

Eliminar uma tabela

Não é possível utilizar ADOX para eliminar uma tabela (folha de cálculo) ou nome do intervalo no Excel, se criou ADOX ou não.
  • Se tentar eliminar a folha de cálculo (AMinhaTabela $), este parece ter êxito sem erros, mas a folha de cálculo permanece no livro. Pode chamar o método delete repetidamente sem erros, mas não tem qualquer efeito.
  • Se tentar eliminar o intervalo (AMinhaTabela), este parece ter êxito sem erros, mas o intervalo permanece no livro. No entanto, se tentar eliminar o intervalo de uma segunda vez, receberá o erro 3265:
    Impossível localizar o item na colecção correspondente ao nome solicitado ou ordinal.
  • Se tentar eliminar um intervalo com nome, deixa a definição de intervalo intactos, mas quaisquer dados no intervalo são eliminados.

Colunas ADOX

Colunas ADOX correspondem às colunas ou campos de uma base de dados e uma forma ordenada correspondem às colunas de uma folha de cálculo do Excel.

Tipos de dados ADO utilizados com o Excel

ADO reconhece seis tipos de dados de origem de dados do Excel que pode utilizar para criar colunas:

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

Colunas em geral

  • Pode acrescentar colunas adicionais a uma tabela criada anteriormente, desde que a tabela não contém quaisquer linhas de dados.
  • É possível especificar nomes de colunas com espaços.
  • ADOX cria sempre cabeçalhos de coluna são precedidos por uma plica ('), por exemplo, 'F1,' Col1, ' Col2. No entanto, este não parece causar um problema mais tarde porque o nome é obtido sem as aspas.

Criar colunas quando criar uma tabela

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

O código seguinte cria uma nova tabela (folha de cálculo) que contém duas colunas (um numérico e 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 numa folha de cálculo existente

Adicionar colunas a num já existente, folha de cálculo vazia gera resultados invulgares. Quando a primeira coluna ADOX é acrescentada a colecção de colunas da tabela, ADOX primeiro cria um cabeçalho de coluna com o nome F1 na coluna A da folha de cálculo e, em seguida, cria o novo cabeçalho de coluna ADOX na coluna B da folha de cálculo. Assim, código ADOX acrescenta duas novas colunas resulta em três cabeçalhos de coluna. Se tentar eliminar esta indesejável, primeira coluna da colecção de colunas antes de acrescentar a primeira coluna ADOX, parece ser concluída com êxito mas a coluna indesejada é criada ainda assim.

Eliminar colunas

Não é possível eliminar uma coluna de uma tabela ADOX no Excel.
  • Se a coluna não tem dados, este parece ter êxito sem erros, mas a coluna e o cabeçalho de coluna permanecem.
  • Se a coluna contiver dados, a operação de eliminação falha com a seguinte mensagem de erro:
    Operação inválida.

Alterar o tipo de dados de uma coluna existente

Depois de uma coluna tiver sido anexada a uma tabela, se tentar definir a propriedade .Type para outro tipo de dados, receberá a seguinte mensagem de erro:
Operação não é permitida neste contexto.

Adicionar dados ao Excel tabelas e colunas

Quando testar o código ADO com o Excel no ambiente de estrutura do Visual Basic, a primeira vez que executar uma operação de conjunto de registos, poderá receber a seguinte mensagem de erro:
Seleccionar a sequência de agrupamento não suportada pelo sistema operativo.
Pode ignorar esta mensagem de erro; este erro não ocorre após a aplicação é compilada. Para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
246167PROBLEMA: Agrupar sequência erro inicial ADODB Recordset na primeira vez com um Excel XLS

Adicionar dados ao Excel colunas criados por ADOX

Quando utiliza ADO para inserir ou modificar dados em tabelas e colunas que tenha criado no Excel utilizando o ADOX, o ADO respeita os tipos de dados que especificou para essas colunas, embora não limpar onde estas informações são armazenadas.
  • Todos os valores de cadeia de texto são armazenados precedido por uma aspa simples. No entanto, este não parece causar um problema mais tarde porque o valor é obtido sem as aspas.
  • Se tentar inserir uma cadeia de texto numa coluna que está definida como numérico ou um número numa coluna de texto, receberá 80040e21 de erro:
    Operação de múltiplos passos gerou erros. Verifique cada valor de estado.

Adicionar dados a colunas normais do Excel

Quando utiliza ADO para inserir ou modificar dados em folhas de cálculo do Excel ou intervalos que não são criados ou modificados utilizando ADOX, sem restrições são aplicadas no tipo de dados que pode inserir.
  • Cadeias de texto são armazenadas sem a aspa simples anterior.
  • Os números aparecem alinhadas à esquerda. No Excel 2002, os números são sinalizados com a etiqueta inteligente que avisa-o "Números armazenados como texto". Isto poderá provocar um problema mais tarde quando estiver a trabalhar com os dados, especialmente se os dados tem sido armazenados no Excel para análise de numérico.

Utilizar SQL CREATE, ALTER e instruções DROP

Pode executar instruções DDL (Microsoft SQL Data Definition Language) como CREATE, ALTER e DROP objectos de base de dados do Excel através de uma ligação do ADO para produzir os mesmos resultados que os métodos ADOX correspondentes que são descritos acima.

Conclusão

  • ADOX funciona melhor com o Excel quando uma nova tabela e respectivas colunas são criadas ao mesmo tempo.
  • ADO funciona melhor com dados do Excel, quando os dados estão armazenados numa folha de cálculo é criada utilizando ADOX.
tipo de folha de cálculo de extensibilidade dados

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 303814 - Última Revisão: 12/06/2015 04:03:15 - Revisão: 2.2

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

  • kbnosurvey kbarchive kbmt kbdatabase kbhowto kbiisam KB303814 KbMtpt
Comentários