Select the product you need help with
Como usar o ADO com dados do Excel do VBA ou de Visual BasicID do artigo: 257819 - Exibir os produtos aos quais esse artigo se aplica. Nesta páginaSumário Este artigo discute o uso de objetos de dados ActiveX
(ADO) com planilhas do Microsoft Excel como uma fonte de dados. O artigo também
destaca os problemas de sintaxe e limitações específicas do Excel. Este artigo
não discutir tecnologias OLAP ou tabela dinâmica ou outros usos especializados do Excel
dados. Para adicionais informações, clique no número abaixo para ler o artigo no Base de dados de Conhecimento da Microsoft: 303814
(http://support.microsoft.com/kb/303814/EN-US/
)
Como usar ADOX com dados do Excel do VBA ou de Visual BasicMais InformaçõesINTRODUÇÃOAs linhas e colunas de uma planilha do Microsoft Excel perto Se as linhas e colunas de uma tabela de banco de dados. Como manter os usuários mente que o Microsoft Excel não é um sistema de gerenciamento de banco de dados relacional e reconhecer as limitações que impõe esse fato, geralmente faz sentido tirar vantagem do Excel e suas ferramentas para armazenar e analisar dados.Microsoft ActiveX objetos de dados torna possível tratar de uma pasta de trabalho do Excel como se fosse banco de dados. Este artigo descreve como fazer isso no seguinte seções:
Conectar-se para o Excel com o ADOADO pode se conectar a um arquivo de dados do Excel com uma das duas OLE Provedores de banco de dados incluído no MDAC:
Como usar o Microsoft Jet OLE DB ProviderO provedor Jet requer apenas duas informações em ordem para se conectar a uma fonte de dados do Excel: o caminho, incluindo o nome do arquivo e o 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 Propriedades de vínculo de dados Se você usar o controle de dados ADO ou o ambiente de dados em seu aplicativo, então a caixa de diálogo Data Link Properties é exibida para reunir a conexão necessária configurações.
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 podem ser usados como campo nomes. Se não for esse o caso, você deve ativar essa configuração ou seu primeiro linha de dados "desaparece" para ser usado como nomes de campo. Isso é feito adicionando a opcional HDR = definir Propriedades estendidas da seqüência 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 = não; o provedor de nomes de campos F1, F2, etc. Como a seqüência de Propriedades estendidas agora contém vários valores, deve ser colocado entre aspas duplas próprio, além de um par de aspas duplas para informar ao Visual de adicional Básico para tratar o primeiro conjunto de aspas como valores literais, como a seguir exemplo (onde espaços extras foram adicionados para maior clareza visual). Usando o provedor Microsoft OLE DB para Drivers ODBCO provedor para drivers ODBC (que este artigo se refere como o "provedor ODBC" por questão de brevidade) também requer somente dois (2) peças informações para se conectar a uma fonte de dados do Excel: o nome do driver e o caminho da pasta de trabalho e nome.Importante: conexão de um ODBC para o Excel é somente leitura por padrão. O ADO Configuração da propriedade Recordset LockType não substitui essa configuração de conexão. Você deve definir ReadOnly como Falso em sua seqüência de conexão ou sua configuração de DSN se desejar Para editar seus dados. Caso contrário, você pode receber a seguinte mensagem de erro: A operação deve usar uma consulta atualizável. Se você usar o controle de dados ADO ou o ambiente de dados em seu aplicativo, então a caixa de diálogo Data Link Properties é exibida para reunir a conexão necessária configurações.
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, podem ser usados como campo nomes. Se não for esse o caso, você deve ativar essa configuração ou seu primeiro linha de dados "desaparece" para ser usado como nomes de campo. Isso é feito adicionando a opcional FirstRowHasNames = a configuração de seqüência de conexão. O padrão, 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 bug no driver ODBC, especificando o FirstRowHasNames definição atualmente não tem efeito. Em outras palavras, o ODBC do Excel driver (MDAC 2.1 ou posterior) sempre tratará a primeira linha de dados especificado fonte como nomes de campo. Para obter informações adicionais sobre Título de coluna bug, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 288343 Linhas a examinar: o Excel não fornece ADO com esquema detalhada
informações sobre os dados que ele contém, como um banco de dados relacional.
Portanto, o driver deve pesquisar pelo menos algumas linhas de existente
dados para dar um Palpite no tipo de dados de cada coluna. O
padrão para "Linhas para verificar" é oito (8) linhas. Você pode especificar um valor inteiro
de um (1) para 16 (dezesseis) linhas, ou você pode especificar zero (0) para examinar todos os
linhas existentes. Isso é feito adicionando o opcional MaxScanRows = definindo a seqüência de conexão ou alterando a configuração de linhas a examinar na caixa de diálogo configuração DSN.
(http://support.microsoft.com/kb/288343/EN-US/
)
BUG: Driver ODBC do Excel ignora a configuração de cabeçalho ou FirstRowHasNamesNo entanto, um bug no driver ODBC, especificando as linhas para varredura (MaxScanRows) configuração atualmente não tem efeito. Em outras palavras, o driver de ODBC do Excel (MDAC 2.1 e posterior) sempre verifica primeiro 8 linhas na fonte de dados especificado ordem para determinar o tipo de dados da coluna. Para obter informações adicionais sobre as linhas de verificação de bug, incluindo uma solução simple, clique no número de artigo abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 189897 Outras configurações: se construir a seqüência de conexão usando
caixa de diálogo Propriedades de Link de dados , você pode observar algumas outras Propriedades estendidas configurações adicionadas à seqüência de conexão que não são absolutamente
necessário, como:
(http://support.microsoft.com/kb/189897/EN-US/
)
XL97: Dados truncados para 255 caracteres com o Driver ODBC do ExcelNo ambiente de design Visual Basic com determinados as versões do MDAC, você pode ver a seguinte erro mensagem na primeira vez seu programa se conecta a uma fonte de dados do Excel em tempo de design: Seqüência de agrupamento não suportada pelo sistema operacional selecionada. 246167
(http://support.microsoft.com/kb/246167/EN-US/
)
PRB: Agrupando seqüência erro inicial ADODB Recordset na primeira vez contra um Excel XLSConsiderações que se aplicam a ambos os provedores do OLE DBCuidado sobre tipos de dados mistosConforme mencionado anteriormente, o ADO deve adivinhar o tipo de dados para cada coluna em sua planilha do Excel ou um intervalo. (Isso não é afetado por Configurações de formatação de célula Excel.) Um problema sério pode ocorrer se você tiver valores numéricos misturados com valores de texto na mesma coluna. Do Jet e o Provedor ODBC retornar os dados do tipo maioria mas retornar nulo (vazio) valores para o tipo de dados de participação minoritária. Se os dois tipos igualmente estão misturados coluna, o provedor escolhe numérico sobre texto. Por exemplo:
Para contornar este problema para dados somente leitura, ativar O modo de importação usando a configuração "IMEX = 1" na seção Propriedades estendidas da seqüência de conexão. Isso reforça o ImportMixedTypes = Text configuração do registro. No entanto, observe que atualizações dar inesperado resultados neste modo. Para obter informações adicionais sobre essa configuração, clique em o número de artigo abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 194124 Não é possível abrir uma pasta de trabalho protegida por senha
(http://support.microsoft.com/kb/194124/EN-US/
)
PRB: Excel valores retornado como NULL usando OpenRecordset do DAOSe a pasta de trabalho do Excel estiver protegida por senha, você não é possível abri-lo para acesso a dados, mesmo fornecendo a senha correta com as configurações de conexão, a menos que o arquivo de pasta de trabalho já está aberto no Aplicativo Microsoft Excel. Se você tentar, você recebe o seguinte erro mensagem: Não foi possível descriptografar o arquivo. 211378
(http://support.microsoft.com/kb/211378/EN-US/
)
XL2000: Erro "Não foi possível descriptografar o arquivo" com senha protegida arquivoRecuperar 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 o códigoOs dados do Excel podem estar contidos em um trabalho de a seguir:
Para especificar uma planilha como sua origem de registro, use o nome da planilha seguido de um cifrão e entre colchetes. Para exemplo: Se você omitir ambos o cifrão e os colchetes ou o sinal de dólar, você receberá a mensagem de erro seguinte: ... o mecanismo de banco de dados Jet
não foi possível localizar o objeto especificado Erro de sintaxe em cláusula FROM. Erro de sintaxe na consulta. Cláusula de consulta incompletos. Para especificar um intervalo de células nomeado como OrigemDoRegistro, Basta use o nome definido. Por exemplo: Para especificar um intervalo sem nome de células como seu RecordSource, anexe notação padrão de linha/coluna do Excel ao final da folha nome de 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 (nome ou sem nome), Jet também adiciona novos registros abaixo os registros existentes no intervalo como espaço permite. No entanto, se você Requery no intervalo original, o conjunto de registros resultante não inclui o registros adicionados recentemente fora do intervalo. Com as versões do MDAC anteriores a 2.5, quando você especifica um intervalo nomeado, você não pode adicionar novos registros, além de definição de limites do intervalo ou 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 de dados do Excel na guia Geral da caixa de diálogo ADODC Propriedades de fonte, clique na guia OrigemDoRegistro . Se você escolher um CommandType de adCmdText, insira um Selecione a consulta 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, na lista suspensa lista exibe os intervalos nomeados e nomes de planilha que estão disponíveis no pasta de trabalho selecionada, com intervalos nomeados listados primeiro.Esta caixa de diálogo caixa corretamente acrescenta o cifrão para nomes de planilha, mas não adiciona o colchetes necessários. Como resultado, se você simplesmente selecionar um nome de planilha e clique em OK, você recebe a seguinte mensagem de erro mais tarde: Erro de sintaxe em cláusula FROM. Selecione os dados do Excel com dados ambiente comandosApós 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 Declaração de 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 suspensa, e você estiver usando o provedor do Jet, a lista suspensa exibe intervalos nomeados e nomes de planilha disponíveis no pasta de trabalho selecionada, com intervalos nomeados listados primeiro. (Se você escolher um nome da planilha neste local, você não precisará adicionar colchetes ao redor o nome da planilha manualmente como fazer para o controle de dados ADO.) Se você estiver usando o provedor ODBC, você verá apenas intervalos nomeados listados nesta suspensa lista. No entanto, você pode inserir manualmente um nome de planilha.Como os dados de alteração Excel: editar, adicionar e excluirEditarVocê pode editar dados do Excel com os métodos normais de ADO. Campos do conjunto de registros que correspondem às células da planilha de Excel que contém Fórmulas do Excel (começando com "=") são somente leitura e não podem ser editadas. Lembre-se de que uma conexão ODBC para o Excel é somente leitura por padrão, a menos que você Especifique o contrário em configurações de conexão. Consulte anteriormente em "usando o Microsoft OLE DB Provider para Drivers ODBC." Adicionar Você pode adicionar registros para o Excel OrigemDoRegistro como espaço permite. No entanto, se você adicionar novos registros fora do intervalo que você originalmente especificado, esses registros não são visíveis se repetir no intervalo original especificação. Consulte anteriormente em "Cuidado sobre como especificar intervalos." Em determinadas circunstâncias, quando você usar 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 em colunas no Excel erradas. Para obter informações adicionais, clique no artigo número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft: 314763 Excluir
(http://support.microsoft.com/kb/314763/EN-US/
)
CORREÇÃO: O ADO insere dados em colunas erradas no ExcelVocê está mais restrito na exclusão de dados do Excel dados de uma fonte de dados relacionais. No banco de dados relacional, "linha" não tem significado ou existência além do "Registro"; em uma planilha do Excel, este não é True. Você pode excluir os valores nos campos (células). No entanto, não é possível:
Recuperar a estrutura da fonte de dados (metadados) do ExcelVocê pode recuperar dados sobre a estrutura de dados do Excel fonte (tabelas e campos) com ADO. Resultados diferem ligeiramente entre os dois Provedores do OLE DB, embora ambos retornam pelo menos o mesmo número pequeno de útil campos de informações. Metadados podem ser recuperados com o método OpenSchema do objeto de conexão do ADO, que retorna um objeto ADO Recordset . Você também pode usar os dados de ActiveX Microsoft mais poderoso Extensões de objetos biblioteca Data Definition Language e Security (ADOX) para essa finalidade. No caso de uma fonte de dados do Excel no entanto, onde uma "tabela" é é um de um número limitado de uma planilha ou um intervalo nomeado e "campo" Essa energia adicional de tipos de dados genéricos, não é útil.Informações da tabela de consultaDe vários objetos disponíveis no banco de dados relacional (tabelas, exibições, procedimentos armazenados e assim por diante), expõe uma fonte de dados do Excel tabela somente equivalentes, consistindo em planilhas e intervalos nomeados definição de trabalho especificada. Intervalos nomeados são tratados como "Tabelas" e planilhas são tratadas como "Tabelas de sistema" e não é muito útil tabela informações que você pode recuperar além desta propriedade "table_type". Você pode solicitar um lista de tabelas disponíveis na pasta de trabalho com o seguinte código:
O provedor ODBC também retorna um conjunto de registros com nove (9) campos, dos quais ele ocupa apenas três (3):
Consultar informações do campoCada campo (coluna) de uma fonte de dados do Excel é um do tipos de dados a seguir:
Enumerar as tabelas e campos e suas propriedadesCódigo de Visual Basic (como o exemplo a seguir) pode ser usado para enumerar as tabelas e colunas em uma fonte de dados do Excel e disponíveis campos de informações sobre cada um. Este exemplo produz seus resultados para uma caixa de listagem. Lista1 no mesmo formulário.Usar a janela de exibição de dadosSe você criar um link de dados para uma fonte de dados do Excel no Visual Janela de exibição de dados básica, a janela de exibição de dados exibe as mesmas informações que Você pode recuperar programaticamente conforme descrito anteriormente. Em particular, observe Se o provedor Jet lista planilhas e intervalos nomeados em "Tabelas" onde o provedor ODBC mostra apenas intervalos nomeados. Se você estiver usando o ODBC Provedor e ter não definido qualquer intervalos nomeados, a lista de "Tabelas" será vazio.Limitações do ExcelO uso do Excel como uma fonte de dados vinculado por internos limitações de planilhas e pastas de trabalho do Excel. Esses incluem, mas não são limitado a:
Referências Para obter informações adicionais sobre como usar ADO.NET para
recuperar e modificar registros em uma pasta de trabalho do Excel com o .net Visual Basic, clique em
o número de artigo seguinte para visualizar o artigo na Microsoft Knowledge
Base: 316934 Para obter informações adicionais, clique no
números de artigo abaixo para visualizar os artigos na Base de dados de Conhecimento da Microsoft:
(http://support.microsoft.com/kb/316934/EN-US/
)
Como usar o ADO.NET para recuperar e modificar registros de uma planilha do Excel Visual Basic .net295646
(http://support.microsoft.com/kb/295646/EN-US/
)
Como transferir dados da fonte de dados ADO para o Excel com o ADO246335
(http://support.microsoft.com/kb/246335/EN-US/
)
Como transferir dados do conjunto de registros ADO para o Excel com a automação247412
(http://support.microsoft.com/kb/247412/EN-US/
)
INFO: Métodos para transferir dados para o Excel de Visual Basic278973
(http://support.microsoft.com/kb/278973/EN-US/
)
EXEMPLO: ExcelADO demonstra como utilizar ADO para ler e gravar dados em pastas de trabalho do Excel318373
(http://support.microsoft.com/kb/318373/EN-US/
)
Como recuperar metadados do Excel usando o método GetOleDbSchemaTable não no Visual Basic .netPropriedadesID do artigo: 257819 - Última revisão: quinta-feira, 5 de julho de 2012 - Revisão: 6.0 A informação contida neste artigo aplica-se a:
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: 257819
(http://support.microsoft.com/kb/257819/en-us/
)
| Traduções deste artigo
|




Voltar para o início








