ID do artigo: 257819 - Última revisão: sábado, 27 de janeiro de 2007 - Revisão: 4.6 Como usar o ADO com dados do Excel do Visual Basic ou VBA
Nesta páginaSumárioEste artigo descreve o uso de ActiveX Data Objects (ADO) com planilhas do Microsoft Excel como uma fonte de dados. O artigo também destaca problemas de sintaxe e limitações específicas do Excel. Este artigo não aborda OLAP ou usa tecnologias de tabela dinâmica ou outros especializado de dados do Excel. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 303814
(http://support.microsoft.com/kb/303814/EN-US/
)
Como usar ADOX com dados do Excel do Visual Basic ou VBA Mais InformaçõesINTRODUÇÃOAs linhas e colunas de uma planilha do Microsoft Excel semelhante de perto as linhas e colunas de uma tabela de banco de dados. Desde que os usuários tenha em mente que o Microsoft Excel não é um sistema de gerenciamento de banco de dados relacional e reconhecem as limitações que impõe esse fato, geralmente faz sentido para aproveitar o Excel e suas ferramentas para armazenar e analisar dados.Microsoft ActiveX Data Objects torna possível tratar de uma pasta de trabalho do Excel como se fosse um banco de dados. Este artigo descreve como fazer isso nas seções a seguir:
Conectar-se a Excel com o ADOADO pode estabelecer conexão com um arquivo de dados Excel com uma das duas OLE DB Providers incluído no MDAC:
Como usar o Microsoft Jet OLE DB ProviderO provedor Jet requer apenas duas partes de informação para se conectar a uma fonte de dados do Excel: o caminho, incluindo o nome do arquivo e a versão de arquivo do Excel.provedor Jet usando uma seqüência de conexão Não foi possível localizar ISAM instalável. provedor Jet usando a caixa de diálogo propriedade do vínculo de dados Se você usar o controle de dados do ADO ou o ambiente de dados em seu aplicativo, em seguida, a caixa de diálogo Data Link Properties é exibida para reunir as configurações de conexão necessárias.
títulos de coluna : por padrão, presume que a primeira linha da sua fonte de dados do Excel contém títulos de colunas que podem ser usados como nomes de campo. Se não for esse o caso, você deve ativar essa configuração ou a primeira linha de dados "desaparece" a ser usado como nomes de campo. Isso é feito adicionando o opcional HDR = definindo como as Propriedades estendidas da seqüência de caracteres de conexão. O padrão, que não precisa ser especificado é HDR = Yes . Se você não tem títulos de coluna, você precisará especificar HDR = no ; o provedor de nomes de seus campos F1, F2, etc.. Porque a seqüência de Propriedades estendidas agora contém vários valores, ele deve ficar entre aspas duplas, mais um adicional par de aspas duplas para informar ao Visual Basic para tratar o primeiro conjunto de aspas como valores literais, como no exemplo a seguir (onde espaços extras foram adicionados para maior clareza visual). Usando o Microsoft OLE DB Provider para drivers ODBCO provedor para drivers ODBC (que este artigo se refere a como "ODBC Provider" para fins de brevidade) também requer somente dois (2) partes de informação para se conectar a uma fonte de dados do Excel: o nome de driver e o caminho da pasta de trabalho e nome de arquivo.importante : conexão ODBC um para o Excel é somente leitura por padrão. O ADO Recordset LockType configuração da propriedade não substitui essa configuração de nível de conexão. Você deve definir ReadOnly como False em sua configuração de DSN ou a seqüência de conexão se você quiser editar seus dados. Caso contrário, você receber a seguinte mensagem de erro: A operação deve usar uma consulta atualizável. Se você usar o controle de dados do ADO ou o ambiente de dados em seu aplicativo, em seguida, a caixa de diálogo Data Link Properties é exibida para reunir as configurações de conexão necessárias.
títulos de coluna : por padrão, presume que a primeira linha da sua fonte de dados do Excel contém títulos de colunas, que podem ser usados como nomes de campo. Se não for esse o caso, você deve ativar essa configuração ou a primeira linha de dados "desaparece" a ser usado como nomes de campo. Isso é feito adicionando o opcional FirstRowHasNames = configuração para a seqüência de caracteres de conexão. O padrão, que não precisa ser especificado é FirstRowHasNames = 1 , onde 1 = True . Se você não tem títulos de coluna, você precisará especificar FirstRowHasNames = 0 , onde 0 = False ; o driver de nomes de campos F1, F2 e assim por diante. Esta opção não está disponível na caixa de diálogo Configuração DSN. No entanto, devido a um erro no driver ODBC, especificando FirstRowHasNames definição atualmente não tem efeito. Em outras palavras, o Excel ODBC driver (MDAC 2.1 ou posterior) sempre tratará a primeira linha na fonte de dados especificado como nomes de campo. Para informationon adicional a coluna bug, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 288343
(http://support.microsoft.com/kb/288343/EN-US/
)
Erro: O driver ODBC do Excel Disregards o FirstRowHasNames ou configuração de cabeçalho linhas a examinar : o Excel não fornece ADO com informações de esquema detalhadas sobre os dados que ele contém, como faria com um banco de dados relacional. Portanto, o driver deve verificar por meio de pelo menos algumas linhas dos dados existentes para fazer uma estimativa razoável no tipo de dados de cada coluna. O padrão para "Linhas para verificar" é de oito (8) linhas. Você pode especificar um valor inteiro de um (1) para dezesseis (16) linhas, ou você pode especificar zero (0) para verificar todas as linhas existentes. Isso é feito adicionando o opcional MaxScanRows = definir como a seqüência de caracteres de conexão, ou alterando a configuração de linhas a examinar na caixa de diálogo Configuração DSN. No entanto, devido a um erro no driver ODBC, especificando as linhas para verificar (MaxScanRows) configuração atualmente não tem efeito. Em outras palavras, o driver de ODBC do Excel (MDAC 2.1 ou posterior) sempre verifica as linhas primeiro 8 na fonte de dados especificado para determinar o tipo de dados de cada coluna. Para obter informações adicionais sobre linhas a verificação de bug, incluindo uma solução simples, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 189897
(http://support.microsoft.com/kb/189897/EN-US/
)
XL97: Dados truncados para 255 caracteres com o driver ODBC do Excel Outras configurações : se você construir a seqüência de conexão, usando a caixa de diálogo Propriedades de vínculo de dados , você pode observar algumas outras Propriedades estendidas configurações à seqüência de caracteres de conexão que não são absolutamente necessárias, como: O ambiente de design do Visual Basic com determinadas versões do MDAC, você verá o seguinte tempo de mensagem o primeiro erro que seu programa se conecta a uma fonte de dados do Excel ao tempo de design: Selecionar o sistema operacional não dá suporte à seqüência de agrupamento. 246167
(http://support.microsoft.com/kb/246167/EN-US/
)
PROBLEMA: Agrupando seqüência erro inicial ADODB Recordset na primeira vez contra um Excel XLS Considerações que se aplicam para os provedores do OLE DBum cuidado sobre tipos mistos de dadosConforme mencionado anteriormente, ADO deve adivinhar no tipo de dados para cada coluna no intervalo ou planilha do Excel. (Isso não é afetado por célula do Excel configurações de formatação.) Um problema sério pode surgir se você tiver valores numéricos misturados com valores de texto na mesma coluna. O Jet e o provedor ODBC retornam os dados da maioria digite mas retornam nulo (vazio) valores para o tipo de dados de participação minoritária. Se os dois tipos igualmente estão misturados na coluna, o provedor escolhe numérico sobre texto. Por exemplo:
Para contornar esse problema para dados somente leitura, habilitar Modo de importação , usando a configuração "IMEX = 1" na seção Propriedades estendidas da seqüência de caracteres de conexão. Isso reforça o ImportMixedTypes = Text configuração do Registro. No entanto, observe que atualizações podem fornecer resultados inesperados nesse modo. Para obter informações adicionais sobre essa configuração, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 194124
(http://support.microsoft.com/kb/194124/EN-US/
)
PROBLEMA: Excel valores retornados como NULL Usando OpenRecordset do DAO não é possível abrir uma pasta de trabalho protegida por senha Se a pasta de trabalho do Excel é protegida por uma senha, você não pode abri-lo para o acesso a dados, até mesmo, fornecendo a senha correta com suas configurações de conexão, a menos que o arquivo de pasta de trabalho já aberto no aplicativo Microsoft Excel. Se você tentar, você receber a seguinte mensagem de erro: Não foi possível descriptografar o arquivo. 211378
(http://support.microsoft.com/kb/211378/EN-US/
)
XL2000: Erro "Não pode descriptografar o arquivo" com senha protegido arquivo Recuperar e editar dados do Excel com o ADOEsta seção aborda dois aspectos de trabalhar com o Excel dados:
Como selecionar dadosHá várias maneiras para selecionar dados. Você pode:
Selecione os dados do Excel com códigoOs dados do Excel podem ser contidos na sua pasta de trabalho em um dos seguintes:
Para especificar uma planilha como sua origem de registro, use o nome da planilha seguido por um sinal de cifrão e entre colchetes. Por exemplo: Se você omitir o símbolo de cifrão e os colchetes ou apenas o sinal de dólar, você receber a seguinte mensagem de erro: ... o mecanismo de banco de dados Jet não foi possível localizar o objeto especificado Erro de sintaxe na cláusula FROM. Erro de sintaxe na consulta. Cláusula de consulta incompleta. Para especificar um intervalo de células nomeado como sua origem de registro, simplesmente use o nome definido. Por exemplo: Para especificar um intervalo de células sem nome como sua origem de registro, acrescente notação padrão de linha/coluna do Excel ao final do nome da planilha nos colchetes. Por exemplo: um cuidado sobre como especificar intervalos : quando você especificar uma planilha como sua origem de registro, o provedor adiciona novos registros abaixo registros existentes na planilha como espaço permite. Quando você especificar um intervalo (chamado ou sem nome), Jet também adiciona novos registros abaixo os registros existentes no intervalo permitido espaço. No entanto, se você repetir a consulta no intervalo original, o conjunto de registros resultante não inclui os registros recém-adicionados fora do intervalo. Com as versões do MDAC anteriores à 2.5, quando você especifica um intervalo nomeado, você não pode adicionar novos registros além dos limites definidos do intervalo ou você recebe a seguinte mensagem de erro: Não é possível expandir o intervalo nomeado. Selecione os dados do Excel com o controle de dados ADODepois de especificar as configurações de conexão para sua fonte de dados Excel na guia Geral da caixa de diálogo ADODC Propriedades , clique na guia OrigemDoRegistro . Se você escolher um CommandType de adCmdText, você pode inserir uma consulta seleção na caixa de diálogo Texto de comando com a sintaxe descrita anteriormente. Se você escolher um CommandType de adCmdTable e você estiver usando o provedor do Jet, a lista drop-down exibe os intervalos nomeados e nomes de planilha que estão disponíveis na pasta de trabalho selecionada, com intervalos nomeados listados primeiro.Esta caixa de diálogo corretamente acrescenta o símbolo de cifrão ao nomes de planilha, mas não adiciona os colchetes necessários. Como resultado, se você simplesmente selecionar um nome de planilha e clique em OK , você receber a seguinte mensagem de erro mais tarde: Erro de sintaxe na cláusula FROM. Selecione os dados do Excel com comandos do ambiente de dadosDepois de configurar a conexão do ambiente de dados para o Excel dados de origem, criar um novo objeto de comando . Se você escolher uma Fonte de dados da Instrução SQL , você pode inserir uma consulta na caixa de texto usando a sintaxe descrita anteriormente. Se você escolher uma Fonte de dados do Objeto de banco de dados , selecione a tabela na primeira lista drop-down, e você estiver usando o provedor do Jet, a lista drop-down exibe intervalos nomeados e nomes de planilha disponível na pasta de trabalho selecionada, com intervalos nomeados listados primeiro. (Se você escolher um nome de planilha nesse local, você não precisará adicionar colchetes em torno do nome de planilha manualmente como faria para o controle de dados ADO.) Se você estiver usando o provedor ODBC, você verá apenas intervalos nomeados listados nesta lista drop-down. No entanto, você pode inserir manualmente um nome de planilha.Como dados de alteração Excel: Editar, adicionar e excluirEditarVocê pode editar dados do Excel com os métodos ADO normais. Campos do conjunto de registros que correspondem às células da planilha contendo Excel fórmulas do Excel (começando com "=") são somente leitura e não podem ser editados. Lembre-se que uma conexão ODBC para o Excel é somente leitura por padrão, a menos que você especifique o contrário na suas configurações de conexão. Consulte anteriormente em "usar o Microsoft OLE DB Provider para drivers ODBC". Adicionar Você pode adicionar registros à fonte de registro do Excel como espaço permite. No entanto, se você adicionar novos registros fora do intervalo especificado originalmente, esses registros não ficam visíveis se você repetir a consulta na especificação do intervalo original. Consulte anteriormente em "Um cuidado sobre como especificar intervalos." Em determinadas circunstâncias, quando você utiliza os métodos AddNew e Update do objeto ADO Recordset para inserir novas linhas de dados em uma tabela do Excel, ADO pode inserir os valores de dados para as colunas erradas no Excel. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 314763
(http://support.microsoft.com/kb/314763/EN-US/
)
CORRECÇÃO: O ADO insere dados em colunas incorreta no Excel Excluir Você não tem mais permissão na exclusão de dados do Excel que dados de uma fonte de dados relacionais. Em um banco de dados relacional, "linha" não tem significado ou existência além do "Registro"; em uma planilha do Excel, essa não é true. Você pode excluir valores nos campos (células). No entanto, você não pode:
Recuperar estrutura da fonte de dados (metadados) do ExcelVocê pode recuperar dados sobre a estrutura de sua fonte de dados Excel (tabelas e campos) com o ADO. Resultados apresentar ligeiras diferenças entre os dois OLE DB provedores, embora ambos retornar pelo menos o mesmo pequeno número de campos úteis de informações. Esses metadados podem ser recuperados com o método OpenSchema do objeto ADO Connection , que retorna um objeto ADO Recordset . Você também pode usar as extensões de objetos de dados do Microsoft ActiveX mais poderosa para biblioteca Data Definition Language e Security (ADOX) para essa finalidade. No caso de uma fonte de dados do Excel no entanto, onde uma "tabela" é uma planilha ou um intervalo nomeado, e "campo" é um de um número limitado de tipos de dados genéricos, esse poder adicional não é útil.Informações da tabela de consultaDos vários objetos disponíveis em um banco de dados relacional (tabelas, modos de exibição, procedimentos armazenados e assim por diante), uma fonte de dados do Excel expõe apenas tabela equivalentes, consistindo em planilhas e os intervalos nomeados definidos na pasta de trabalho especificada. Intervalos nomeados são tratados como "Tabelas" e planilhas são tratadas como "Tabelas de sistema" e não há muitas informações úteis tabela que você pode recuperar além desta propriedade "table_type". Solicitar uma lista das tabelas disponíveis na pasta de trabalho com o código a seguir:
O provedor ODBC também retorna um conjunto de registros com nove (9) campos, dos quais ele ocupa apenas três (3):
Informações de campo de consultaCada campo (coluna) em uma fonte de dados do Excel é um dos tipos de dados seguintes:
Enumerar tabelas e campos e suas propriedadesCódigo do Visual Basic (como o exemplo a seguir) pode ser usado para enumerar as tabelas e colunas em uma fonte de dados do Excel e campos de informações sobre cada disponíveis. Este exemplo produz os resultados para uma caixa de listagem, Lista1, no mesmo formulário.Usar a janela de exibir dadosSe você criar um link de dados para uma fonte de dados do Excel na janela de exibição de dados Visual Basic, a janela de exibição de dados exibe as mesmas informações que você pode recuperar programaticamente conforme descrito anteriormente. Em particular, observe que o provedor Jet lista ambas as planilhas e intervalos em "Tabelas" nomeados, onde o provedor ODBC mostra apenas intervalos nomeados. Se você estiver usando o provedor ODBC e não tiver definido os intervalos nomeados, a lista de "Tabelas" estará vazia.Limitações do ExcelO uso do Excel como uma fonte de dados vinculado, as limitações internas de planilhas e pastas de trabalho do Excel. Esses incluem, mas não estão limitados a:
ReferênciasPara obter informações adicionais sobre como usar o ADO.NET para recuperar e modificar registros de uma planilha do Excel com o Visual Basic .NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 316934
(http://support.microsoft.com/kb/316934/EN-US/
)
Como usar o ADO.NET para recuperar e modificar registros em uma pasta de trabalho Excel com Visual Basic .NET Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft: 295646
(http://support.microsoft.com/kb/295646/EN-US/
)
Como transferir dados da fonte de dados ADO para o Excel com o ADO 246335
(http://support.microsoft.com/kb/246335/EN-US/
)
Como transferir dados de Recordset do ADO para o Excel com a automação 247412
(http://support.microsoft.com/kb/247412/EN-US/
)
INFO: Métodos para transferir dados para o Excel a partir do Visual Basic 278973
(http://support.microsoft.com/kb/278973/EN-US/
)
EXEMPLO: ExcelADO demonstra como usar ADO para ler e gravar dados em pastas de trabalho do Excel 318373
(http://support.microsoft.com/kb/318373/EN-US/
)
Como recuperar metadados do Excel usando o método GetOleDbSchemaTable no Visual Basic .NET A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: 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: 257819
(http://support.microsoft.com/kb/257819/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início