DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 257819 - Última revisão: domingo, 9 de fevereiro de 2014 - Revisão: 7.0

 

Nesta página

Sumário

Este artigo discute o uso de ActiveX Data Objects (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 para o 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 Microsoft:
303814  (http://support.microsoft.com/kb/303814/EN-US/ ) Como usar ADOX com dados do Excel no Visual Basic ou VBA

Mais Informações

INTRODUÇÃO

As linhas e colunas de uma planilha do Microsoft Excel se assemelhem as linhas e colunas de uma tabela de banco de dados. Como 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 uma planilha do Excel como se fosse um banco de dados. Este artigo descreve como fazer isso nas seções a seguir: Nota: O teste para este artigo foi realizado com o Microsoft Data Access Components (MDAC) 2.5 no Microsoft Windows 2000 com Visual Basic 6.0 Service Pack 3 e Excel 2000. Este artigo não pode confirmar ou discutir as diferenças de comportamento podem observar os usuários com diferentes versões do MDAC, o Microsoft Windows, o Visual Basic ou o Excel.

Conectar-se para o Excel com o ADO

ADO pode se conectar a um arquivo de dados do Excel com qualquer um dos dois provedores do OLE DB incluído no MDAC:
  • Provedor do Microsoft Jet OLE DB - ou -

  • Provedor Microsoft OLE DB para Drivers ODBC

Como usar o Microsoft Jet OLE DB Provider

O 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 caracteres de conexão
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "Microsoft.Jet.OLEDB.4.0"
	.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=Excel 8.0;"
	.Open
End With
				
Versão do provedor: é necessário usar o provedor do Jet 4.0; o provedor do Jet 3.51 não suporta os drivers ISAM do Jet. Se você especificar o provedor do Jet 3.51, em tempo de execução você receber a seguinte mensagem de erro:
Não foi possível localizar ISAM instalável.
Versão do Excel: especifique o Excel 5.0 para uma pasta de trabalho do Excel 95 (versão 7.0 do Excel) e o Excel 8.0 para um trabalho do Excel 97, Excel 2000 ou Excel 2002 (XP) (versões 8.0, 9.0 e 10.0 do Excel).

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, a caixa de diálogo Data Link Properties é exibida para obter as configurações de conexão necessárias.
  1. Na guia provedor , selecione o provedor do Jet 4.0. o provedor do Jet 3.51 faz notsupport os drivers ISAM do Jet. Se você especificar o provedor do Jet 3.51, em execução time significativo o usuário recebe a seguinte mensagem de erro:
    Não foi possível findinstallable ISAM.
  2. Na guia conexão , navegue até o arquivo de pasta de trabalho. Ignore as entradas "User ID" e "Password", porque eles não se aplicam a uma conexão do Excel. (Youcannot abrir um arquivo do Excel protegido por senha como uma fonte de dados. Há mais informações sobre esse assunto neste artigo.)
  3. Na guia tudo , selecione Propriedades estendidas na lista e, em seguida, clique em Editar valor. Digite Excel 8.0; separando-o de todas as outras entradas existentes com um semicolon(;). Se você pular essa etapa, você receberá uma mensagem de erro quando você testar o yourconnection, porque o provedor Jet espera que um banco de dados unlessyou especifique de outra forma do Microsoft Access.
  4. Retornar para a guia conexão e clique em Test Connection. Observe que uma caixa de mensagem será exibida informando que o processhas com êxito.
Outras configurações de conexão do provedor Jet

Títulos de coluna: por padrão, é assumido 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 esse não for o caso, você deve ativar essa configuração, ou a primeira linha de dados "desaparece" para serem usados como nomes de campo. Isso é feito adicionando o opcional HDR = definindo 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ê precisa especificar HDR = não; o provedor de nomes de campos F1, F2, etc. Como a seqüência de caracteres de Propriedades estendidas agora contém vários valores, ele deverá ficar entre aspas duplas, além de um par adicional 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).
.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=" " Excel 8.0; HDR=No;" " "
				

Usando o provedor Microsoft OLE DB para Drivers ODBC

O provedor para drivers ODBC (que este artigo se refere a como o "provedor ODBC" por questão de brevidade) também requer apenas 2 (dois) pedaços de informações para se conectar a uma fonte de dados do Excel: o nome do driver, o caminho da pasta de trabalho e o nome.

Importante: a conexão ODBC de um para o Excel é somente leitura por padrão. A configuração da propriedade Recordset ADO LockType não substitui essa configuração nível de conexão. Você deve definir ReadOnly como Falso em sua seqüência de conexão ou a configuração de DSN se você deseja editar os dados. Caso contrário, você recebe a seguinte mensagem de erro:
Operação deve usar uma consulta atualizável.
Provedor ODBC usando uma seqüência de caracteres de conexão sem DSN
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "MSDASQL"
	.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=C:\MyFolder\MyWorkbook.xls; ReadOnly=False;"
	.Open
End With
				
Provedor ODBC usando uma seqüência de caracteres de conexão com um DSN
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
	.Provider = "MSDASQL"
	.ConnectionString = "DSN=MyExcelDSN;"
	.Open
End With
				
Provedor ODBC 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, a caixa de diálogo Data Link Properties é exibida para obter as configurações de conexão necessárias.
  1. Na guia provedor , selecione Microsoft OLE DB Provider para Drivers ODBC.
  2. Na guia conexão , selecione o DSN existente que você deseja usar ou escolha Usar cadeia de conexão. Isso abre o padrão togather de caixa de diálogo de configuração DSN as configurações de conexão necessárias. Lembre-se de desmarcar a configuração somente defaultread, se desejar, conforme mencionado anteriormente.
  3. Retornar para a guia conexão e, em seguida, clique em Test Connection. Observe que uma caixa de mensagem será exibida informando que o processhas com êxito.
Outras configurações de conexão do provedor ODBC

Títulos de coluna: por padrão, ele é considerado 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 esse não for o caso, você deve ativar essa configuração, ou a primeira linha de dados "desaparece" para serem usados como nomes de campo. Isso é feito adicionando o opcional FirstRowHasNames = a definição para a seqüência 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ê precisa especificar FirstRowHasNames = 0, onde 0 = False; o driver de nomes a seus campos F1, F2 e assim por diante. Esta opção não está disponível na caixa de diálogo de configuração de DSN.

No entanto, devido a um erro no driver ODBC, especificando o FirstRowHasNames definição atualmente não tem efeito. Em outras palavras, o driver ODBC do Excel (MDAC 2.1 ou posterior) sempre tratará a primeira linha na fonte de dados especificada como nomes de campo. Para obter informações adicionais sobre o erro de coluna, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
288343  (http://support.microsoft.com/kb/288343/EN-US/ ) Erro: Driver ODBC do Excel ignora a configuração de cabeçalho ou FirstRowHasNames
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 pesquisar 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" é oito (8) linhas. Você pode especificar um valor inteiro de um (1) a dezesseis (16) linhas, ou você pode especificar zero (0) para fazer a varredura de todas as linhas existentes. Isso é feito adicionando o opcional MaxScanRows = a definição para a seqüência de conexão ou alterando a configuração de linhas a examinar na caixa de diálogo de configuração de DSN.

No entanto, devido a um erro no driver ODBC, especificando as linhas para fazer a varredura (MaxScanRows) configuração atualmente não tem efeito. Em outras palavras, o driver ODBC do Excel (MDAC 2.1 ou posterior) sempre verifica primeiro 8 linhas na fonte de dados especificada para determinar o tipo de dados de cada coluna.

Para obter informações adicionais sobre as linhas de verificação de bug, incluindo uma solução simple, clique no número abaixo para ler o artigo na Base de dados de Conhecimento 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 sua seqüência de conexão, usando a caixa de diálogo Data Link Properties , você pode observar algumas outras Propriedades estendidas configurações adicionadas à seqüência de conexão que não são absolutamente necessárias, como:
... DefaultDir=C:\WorkbookPath;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;
				
Mensagem de erro "Seqüência de agrupamento" no Editor do Visual Basic

O ambiente de design do Visual Basic com determinadas versões do MDAC, você verá a seguinte erro mensagem na primeira vez que seu programa se conecta a uma fonte de dados do Excel em tempo de design:
Sequência de agrupamento não suportada pelo sistema operacional selecionada.
Esta mensagem é exibida somente no IDE e não aparecerão na versão do programa compilada. Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
246167  (http://support.microsoft.com/kb/246167/EN-US/ ) PRB: Agrupamento seqüência erro inicial ADODB Recordset na primeira vez em um Excel XLS

Considerações que se aplicam para ambos os provedores do OLE DB

Uma alerta de cuidado sobre tipos de dados mistos

Conforme mencionado anteriormente, ADO deve adivinhar no 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 do Excel.) 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 retornarão valores nulos (vazios) 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 o texto.

Por exemplo:
  • Em oito (8) digitalizadas linhas, se a coluna contiver valores numéricos five(5) e três (3) valores de texto, o provedor retorna cinco (5) números e valores nulos três (3).
  • No seu oito (8) digitalizadas linhas, se os valores numéricos da coluna containsthree (3) e 5 (cinco) valores de texto, o provedor retorna valores nulos de 3 (três) e valores de texto cinco (5).
  • Em oito (8) digitalizadas linhas, se a coluna contiver valores numéricos four(4) e quatro (4) valores de texto, o provedor retorna números de quatro (4) e quatro (4) valores nulos.
Como resultado, se uma coluna contiver valores mistos, o único recurso disponível é para armazenar valores numéricos na coluna como texto e convertê-los para números quando necessárias no aplicativo cliente, usando a função do Visual Basic VAL ou um equivalente.

Como solução alternativa para esse problema de dados somente leitura, ativar o Modo de importação usando a configuração "IMEX = 1" na seção de propriedades estendidas da seqüência 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 Microsoft:
194124  (http://support.microsoft.com/kb/194124/EN-US/ ) PRB: O Excel valores retornado 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 estiver protegida por uma senha, não é possível abri-lo para acesso a dados, até 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 a seguinte mensagem de erro:
Não foi possível descriptografar o arquivo.
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento Microsoft:
211378  (http://support.microsoft.com/kb/211378/EN-US/ ) XL2000: Erro "Não foi possível descriptografar o arquivo" com senha protegida arquivo

Recuperar e editar dados do Excel com o ADO

Esta seção aborda dois aspectos do trabalho com os dados do Excel:
  • Como selecionar dados - e -

  • Como alterar dados

Como selecionar dados

Há várias maneiras para selecionar os dados. Você pode:

  • Selecione os dados do Excel com o código.
  • Selecione os dados do Excel com o controle de dados ADO.
  • Selecione os dados do Excel com dados Environmentcommands.

Selecione os dados do Excel com código

Os dados do Excel podem estar na sua pasta de trabalho em um destes procedimentos:

  • Uma planilha inteira.
  • Um intervalo nomeado de células em uma planilha.
  • Um intervalo sem nome de células em uma planilha.
Especificar uma planilha

Para especificar uma planilha como sua origem de registro, use o nome da planilha seguido de um sinal de cifrão e circundado por colchetes. Por exemplo:
	strQuery = "SELECT * FROM [Sheet1$]"
				
Você também pode delimitar o nome da planilha com o caractere Inclinado aspa simples (') encontrado no teclado em til (~). Por exemplo:
	strQuery = "SELECT * FROM `Sheet1$`"
				
A Microsoft prefere colchetes, que são a convenção de posição para nomes de objeto de banco de dados problemático.

Se você omitir o símbolo de cifrão e os colchetes ou o símbolo de dólar, você recebe a seguinte mensagem de erro:
... o mecanismo de banco de dados Jet não foi possível localizar o objeto especificado
Se você usar o símbolo de dólar, mas omite os colchetes, você verá a seguinte mensagem de erro:
Erro de sintaxe na cláusula FROM.
Se você tentar usar aspas simples, você pode receber a seguinte mensagem de erro:
Erro de sintaxe na consulta. Cláusula de consulta incompletos.
Especifica um intervalo nomeado

Para especificar um intervalo de células nomeado como sua origem de registro, basta use o nome definido. Por exemplo:
	strQuery = "SELECT * FROM MyRange"
				
Especifique um intervalo sem nome

Para especificar um intervalo sem nome de células como sua origem de registro, acrescente notação padrão de linha/coluna do Excel ao final do nome da planilha entre os colchetes. Por exemplo:
	strQuery = "SELECT * FROM [Sheet1$A1:B10]"
				
Uma alerta de cuidado sobre como especificar planilhas: O provedor pressupõe que sua tabela de dados começa com o máximo de superior, mais à esquerda, a célula não vazia da planilha especificada. Em outras palavras, a tabela de dados pode começar na linha 3, coluna C sem problemas. No entanto, você não pode, por exemplo, digite um título worksheeet acima e à esquerda dos dados na célula A1.

Uma alerta de cuidado sobre como especificar intervalos: quando você especificar uma planilha como sua origem de registro, o provedor adiciona novos registros abaixo os 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ê repetir consulta no intervalo original, o conjunto de registros resultante não inclui os registros adicionados recentemente fora do intervalo.

Com versões do MDAC anteriores a 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 um intervalo nomeado.

Selecione os dados do Excel com o controle de dados ADO

Depois de especificar as configurações de conexão para sua fonte de dados do 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 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 cifrão para 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.
Você deve adicionar manualmente os colchetes em torno do nome de planilha. (Esta caixa de combinação Permitir edição.) Se você estiver usando o provedor ODBC, você verá apenas intervalos nomeados listados nesta lista suspensa. No entanto, você pode inserir manualmente um nome de planilha com os delimitadores apropriados.

Selecione os dados do Excel com dados ambiente comandos

Após configurar a conexão do ambiente de dados para a fonte de dados do Excel, crie 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 suspensa, e você estiver usando o provedor 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 neste local, você não precisa adicionar colchetes em torno do nome de planilha manualmente, como você faz para o controle de dados ADO.) Se você estiver usando o provedor ODBC, você verá apenas intervalos nomeados listados nesta lista suspensa. No entanto, você pode inserir manualmente um nome de planilha.

Como alterar os dados do Excel: editar, adicionar e excluir

Editar

Você pode editar dados do Excel com os métodos ADO normais. Campos de conjunto de registros que correspondem às células da Excel planilha contendo fórmulas do Excel (começando com "=") são somente leitura e não podem ser editados. Lembre-se de que uma conexão ODBC com 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 "usando o provedor Microsoft OLE DB 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 especificado originalmente, esses registros não são 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ê 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 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 Microsoft:
314763  (http://support.microsoft.com/kb/314763/EN-US/ ) CORREÇÃO: O ADO insere dados em colunas erradas no Excel
Excluir

Você está mais restrito ao excluir 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, isso não é verdade. Você pode excluir os valores nos campos (células). No entanto, você não pode:
  1. Excluir um registro inteiro de uma vez ou você recebe a mensagem de erro asseguintes:
    Exclusão de dados em um tableis vinculada não é suportada por este ISAM.
    Você só pode excluir uma byblanking de registro o conteúdo de cada campo individual.
  2. Exclua o valor em uma célula que contém um Excel fórmula oryou receber a seguinte mensagem de erro:
    A operação é notallowed neste contexto.
  3. Você não pode excluir as linhas da planilha vazia em que dados de thedeleted foram localizados e o conjunto de registros vai continuar a exibir emptyrecords correspondente a essas linhas vazias.
Uma alerta de cuidado sobre como editar dados do Excel com o ADO: quando você insere dados de texto no Excel com o ADO, o valor de texto é precedido por uma aspa inglesa. Isso pode causar problemas posteriormente no trabalho com os novos dados.

Recuperar a estrutura da fonte de dados (metadados) do Excel

Você pode recuperar dados sobre a estrutura da fonte de dados do Excel (tabelas e campos) com o ADO. Resultados apresentar ligeiras diferenças entre os dois provedores do OLE DB, embora ambos retornam pelo menos o mesmo pequeno número de campos útil das informações. Esses 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 as extensões de objetos de dados do Microsoft ActiveX mais poderosa biblioteca Data Definition Language and 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 consulta

De vários objetos disponíveis no banco de dados relacional (tabelas, modos de exibição, procedimentos armazenados e assim por diante), uma fonte de dados do Excel expõe apenas equivalentes de tabela, contendo as 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 seguinte código:
Set rs = cn.OpenSchema(adSchemaTables)
				
O provedor Jet retorna um conjunto de registros com nove (9) campos, dos quais ele ocupa apenas quatro (4):

  • table_name
  • TABLE_TYPE ("Tabela" ou "Tabela de sistema")
  • Date_Created
  • date_modified
A data de dois campos para uma determinada tabela sempre mostram o mesmo valor, que parece ser a "Data da última modificada." Em outras palavras, "date_created" não é confiável.

O provedor ODBC também retorna um conjunto de registros com nove (9) campos, dos quais ele ocupa apenas três (3):

  • table_catalog, a pasta na qual o islocated de pasta de trabalho.
  • table_name.
  • TABLE_TYPE, conforme observado anteriormente.
De acordo com a documentação do ADO, é possível recuperar uma lista de planilhas, por exemplo, especificando os seguintes critérios adicionais para o método OpenSchema :
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "System Table"))
				
Infelizmente, isso não funciona com uma fonte de dados do Excel com versões do MDAC posteriores à 2.0, usando o provedor.

Informações de campo de consulta

Cada campo (coluna) em uma fonte de dados do Excel é um dos seguintes tipos de dados:

  • numérico (tipo de dados ADO 5, adDouble)
  • moeda (tipo de dados ADO 6, adCurrency)
  • lógico ou booleano (tipo de dados ADO 11, adBoolean)
  • Data (tipo de dados ADO 7, adDate, usando o Jet; 135, adDBTimestamp, usando ODBC)
  • texto (um anúncio ADO...Caractere de tipo, como 202, adVarChar, 200, adVarWChar ou semelhante)
Numeric_precision para uma coluna numérica é sempre retornada como 15 (que é a precisão máxima no Excel); character_maximum_length de uma coluna de texto é sempre retornada como 255 (que é a largura máxima de exibição, mas não o comprimento máximo do texto em uma coluna do Excel). Não há informações úteis de campo que você pode obter além da propriedade data_type . Solicitar uma lista dos campos disponíveis em uma tabela com o código a seguir:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, "TableName", Empty))
				
O provedor Jet retorna um conjunto de registros que contém campos de 28, dos quais ele ocupa oito (8) para campos numéricos e nove (9) para campos de texto. Provavelmente eles são os campos úteis:

  • table_name
  • nome da coluna
  • ordinal_position
  • data_type
O provedor ODBC retorna um conjunto de registros contendo 29 campos, dos quais ele ocupa dez (10) para campos numéricos e 11 para campos de texto. Os campos úteis são os mesmos anterior.

Enumerar as tabelas e os campos e suas propriedades

Có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 os campos disponíveis de informações sobre cada um. Este exemplo produz os resultados para uma caixa de listagem, Lista1, no mesmo formulário.
Dim cn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim intTblCnt As Integer, intTblFlds As Integer
Dim strTbl As String
Dim rsC As ADODB.Recordset
Dim intColCnt As Integer, intColFlds As Integer
Dim strCol As String
Dim t As Integer, c As Integer, f As Integer
Set cn = New ADODB.Connection
With cn
	.Provider = "Microsoft.Jet.OLEDB.4.0"
	.ConnectionString = "Data Source=" & App.Path & _
"\ExcelSrc.xls;Extended Properties=Excel 8.0;"
	'.Provider = "MSDASQL"
	'.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & App.Path & "\ExcelSrc.xls; "
	.CursorLocation = adUseClient
	.Open
End With
Set rsT = cn.OpenSchema(adSchemaTables)
intTblCnt = rsT.RecordCount
intTblFlds = rsT.Fields.Count
List1.AddItem "Tables:	" & intTblCnt
List1.AddItem "--------------------"
For t = 1 To intTblCnt
	strTbl = rsT.Fields("TABLE_NAME").Value
	List1.AddItem vbTab & "Table #" & t & ":	" & strTbl
	List1.AddItem vbTab & "--------------------"
	For f = 0 To intTblFlds - 1
		List1.AddItem vbTab & rsT.Fields(f).Name & _
vbTab & rsT.Fields(f).Value
	Next
	List1.AddItem "--------------------"
	Set rsC = cn.OpenSchema(adSchemaColumns, Array(Empty, Empty, strTbl, Empty))
	intColCnt = rsC.RecordCount
	intColFlds = rsC.Fields.Count
	For c = 1 To intColCnt
		strCol = rsC.Fields("COLUMN_NAME").Value
		List1.AddItem vbTab & vbTab & "Column #" & c & ": " & strCol
		List1.AddItem vbTab & vbTab & "--------------------"
		For f = 0 To intColFlds - 1
			List1.AddItem vbTab & vbTab & rsC.Fields(f).Name & _
vbTab & rsC.Fields(f).Value
		Next
		List1.AddItem vbTab & vbTab & "--------------------"
		rsC.MoveNext
		Next
		rsC.Close
		List1.AddItem "--------------------"
		rsT.MoveNext
Next
rsT.Close
cn.Close
				

Usar a janela de exibição de dados

Se você criar um vínculo de dados com uma fonte de dados do Excel na janela de visualização de dados do 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 definiu qualquer intervalos nomeados, a lista de "Tabelas" estará vazia.

Limitações do Excel

O uso do Excel como uma fonte de dados é restrita às limitações internas de planilhas do Excel e planilhas. Esses incluem, mas não estão limitados a:

  • Tamanho da planilha: 65.536 linhas por 256 colunas
  • Célula conteúdo (texto): 32.767 caracteres
  • Planilhas em uma pasta de trabalho: limitado pelo availablememory
  • Nomes em uma pasta de trabalho: limitado pela memória disponível

Referências

Para obter informações adicionais sobre como usar o ADO.NET para recuperar e modificar registros em uma pasta de trabalho do Excel com o Visual Basic .NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento 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 do Excel com o Visual Basic .NET
Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento 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 do conjunto de registros 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 do Visual Basic
278973  (http://support.microsoft.com/kb/278973/EN-US/ ) EXEMPLO: ExcelADO demonstra como utilizar 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:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic for Applications 6.0
  • Microsoft Data Access Components 2.1
  • Microsoft Data Access Components 2.5
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
Palavras-chave: 
kbhowto kbiisam kbmt KB257819 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.
Clique aqui para ver a versão em Inglês deste artigo: 257819  (http://support.microsoft.com/kb/257819/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store