Como usar o ADO com dados do Excel do VBA ou de Visual Basic

ID do artigo: 257819 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Nesta página

Sumá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 Como usar ADOX com dados do Excel do VBA ou de Visual Basic

Mais Informações

INTRODUÇÃO

As 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: Observação: O teste para este artigo foi realizado com dados da Microsoft 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 diferenças de comportamento podem observar os usuários com diferentes versões do MDAC, Microsoft Windows, Visual Basic ou Excel.

Conectar-se para o Excel com o ADO

ADO pode se conectar a um arquivo de dados do Excel com uma das duas OLE Provedores de banco de dados incluído no MDAC:
  • Provedor Microsoft Jet OLE DB - ou -

  • Microsoft OLE DB Provider para ODBC Drivers

Como usar o Microsoft Jet OLE DB Provider

O 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
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 Jet 4.0 Provider; o Provedor Jet 3.51 não oferece suporte os drivers ISAM do Jet. Se você especificar o Jet 3.51 Provedor, em tempo de execução que você recebe a seguinte mensagem de erro:
Não foi possível localizar ISAM instalável.
Versão do Excel: especificar 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 Excel 97, Excel 2000 ou Excel 2002 (XP) pasta de trabalho (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, então a caixa de diálogo Data Link Properties é exibida para reunir a conexão necessária configurações.
  1. Na guia provedor , selecione o provedor do Jet 4.0. o Jet 3.51 Provider não suporte os drivers ISAM do Jet. Se você especificar o provedor do Jet 3.51, em tempo de execução Você recebe a seguinte mensagem de erro:
    Não foi possível encontrar ISAM instalável.
  2. Na guia conexão , procure o arquivo de pasta de trabalho. Ignorar "User ID" e Entradas de "Senha", porque estas não se aplicam a uma conexão do Excel. (Você não é possível abrir um arquivo do Excel protegido por senha como uma fonte de dados. Há mais informações sobre este assunto mais adiante neste artigo).
  3. Na guia tudo , selecione Propriedades estendidas na lista e clique em Editar valor. Digite Excel 8.0; a separação de outras entradas existentes com um ponto e vírgula (;). Se você omitir esta etapa, você recebe uma mensagem de erro quando você testar seu conexão, porque o provedor Jet espera um banco de dados do Microsoft Access, a menos que Especifique em contrário.
  4. Retorne a guia conexão e clique em Test Connection. Observe que uma caixa de mensagem será exibida informando que o processo foi bem-sucedida.
Outras configurações de conexão do provedor Jet

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).
.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 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.
Provedor ODBC usando uma seqüência 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 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, então a caixa de diálogo Data Link Properties é exibida para reunir a conexão necessária configurações.
  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 seqüência de conexão. Isso abre a caixa de diálogo de configuração de DSN padrão para Obtenha as configurações de conexão necessárias. Lembre-se de desmarcar o padrão configuração somente leitura se desejado, como mencionado anteriormente.
  3. Retorne a guia conexão e clique em Test Connection. Observe que uma caixa de mensagem será exibida informando que o processo foi bem-sucedida.
Outras configurações de conexão do provedor ODBC

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 BUG: Driver ODBC do Excel ignora a configuração de cabeçalho ou FirstRowHasNames
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.

No 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 XL97: Dados truncados para 255 caracteres com o Driver ODBC do Excel
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:
... DefaultDir=C:\WorkbookPath;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;
				
Mensagem de erro "Seqüência de agrupamento" no Editor de Visual Basic

No 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.
Esta mensagem aparece somente no IDE e não aparecerão no compilado versão do programa. Para informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
246167 PRB: Agrupando seqüência erro inicial ADODB Recordset na primeira vez contra um Excel XLS

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

Cuidado sobre tipos de dados mistos

Conforme 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:
  • Em seus oito (8) digitalizadas linhas, se a coluna contém cinco (5) valores numéricos e três (3) valores de texto, o provedor retorna cinco (5) números e valores nulos três (3).
  • Em seus oito (8) digitalizadas linhas, se a coluna contém três (3) valores numéricos e cinco (5) valores de texto, o provedor retorna três (3) nulos valores e cinco (5) valores de texto.
  • Em seus oito (8) digitalizadas linhas, se a coluna contiver quatro (4) valores numéricos e quatro (4) valores de texto, o provedor retorna quatro (4) números e valores nulos quatro (4).
Como resultado, se a coluna contiver valores mistos, a única recursos é para armazenar valores numéricos na coluna como texto e convertê-los para números quando necessário no aplicativo cliente usando o Visual Basic Função VAL ou um equivalente.

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 PRB: 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 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.
Para obter informações adicionais, Clique no número abaixo para ler o artigo na Microsoft Knowledge Base:
211378 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 de trabalhar com o Excel dados:
  • Como selecionar dados - e -

  • Como alterar dados

Como selecionar dados

Há várias maneiras para selecionar 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 ambiente comandos.

Selecione os dados do Excel com o código

Os dados do Excel podem estar contidos em um trabalho de a seguir:

  • 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 cifrão e entre colchetes. Para exemplo:
	strQuery = "SELECT * FROM [Sheet1$]"
				
Você também pode delimitar o nome da planilha com a aspa simples Inclinado caractere (') encontrado no teclado em til (~). Por exemplo:
	strQuery = "SELECT * FROM `Sheet1$`"
				
Microsoft prefere colchetes, são a posição convenção de nomes de objeto de banco de dados problemático.

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
Se você usar o cifrão mas omitir os colchetes, você verá a seguinte mensagem de erro:
Erro de sintaxe em cláusula FROM.
Se você tentar usar aspas simples, você recebe a seguinte mensagem de erro:
Erro de sintaxe na consulta. Cláusula de consulta incompletos.
Especifique um intervalo nomeado

Para especificar um intervalo de células nomeado como OrigemDoRegistro, 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 seu RecordSource, anexe notação padrão de linha/coluna do Excel ao final da folha nome de colchetes. Por exemplo:
	strQuery = "SELECT * FROM [Sheet1$A1:B10]"
				
Um cuidado sobre como especificar planilhas: provedor pressupõe que sua tabela de dados começa com a célula mais superior, mais à esquerda, não em branco na planilha especificada. Em outras palavras, sua tabela de dados pode começar na linha 3, coluna c sem problema. No entanto, você não pode, por exemplo, digite um título worksheeet acima e à esquerda os dados na célula A1.

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 ADO

Depois 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.
Você deve Adicione manualmente os colchetes em torno do nome de planilha. (Esta caixa de combinação permitir a edição.) Se você estiver usando o provedor ODBC, consulte chamada somente intervalos listados na lista suspensa. No entanto, você pode inserir manualmente um nome da 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 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 excluir

Editar

Você 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 CORREÇÃO: O ADO insere dados em colunas erradas no Excel
Excluir

Você 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:
  1. Excluir um registro inteiro de uma vez ou você recebe a mensagem de erro seguinte:
    Exclusão de dados em uma tabela vinculada não é suportada por este ISAM.
    Você só pode excluir um registro apagando o conteúdo de cada campo individual.
  2. Exclua o valor na célula que contém uma fórmula do Excel ou Você recebe a seguinte mensagem de erro:
    A operação não é permitido neste contexto.
  3. Não é possível excluir as linhas da planilha vazia na qual o dados excluídos foram localizados e registros continuará a exibir vazio registros correspondentes a essas linhas vazias.
Um 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 simples. Isso pode causar problemas posteriormente no Trabalhando com os novos dados.

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

Você 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 consulta

De 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:
Set rs = cn.OpenSchema(adSchemaTables)
				
O provedor Jet retorna um conjunto de registros com nove (9) campos, da qual ele preenche apenas quatro (4):

  • table_name
  • TABLE_TYPE ("Tabela" ou "Tabela de sistema")
  • Date_Created
  • date_modified
Data 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 é a pasta de trabalho localizado.
  • table_name.
  • TABLE_TYPE, como observado anteriormente.
De acordo com a documentação do ADO, é possível recuperar uma lista de planilhas somente, por exemplo, especificando adicionais critérios para o método OpenSchema :
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, "System Table"))
				
Infelizmente, isso não funciona contra uma fonte de dados do Excel com Versões do MDAC posteriores à 2.0, usando o provedor.

Consultar informações do campo

Cada campo (coluna) de uma fonte de dados do Excel é um do tipos de dados a seguir:

  • 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 do ADO...Char tipo, como 202, adVarChar, 200, adVarWChar ou semelhante)
Numeric_precision para uma coluna numérica sempre retornado como 15 (que é a precisão máxima no Excel); o character_maximum_length de um texto da coluna é 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á muito informações úteis de campo que você pode obter além da propriedade data_type . Solicitar uma lista de campos disponíveis em uma tabela com o seguinte código:
Set rs = cn.OpenSchema(adSchemaTables, Array(Empty, Empty, "TableName", Empty))
				
O provedor Jet retorna um conjunto de registros que contém campos de 28, que ele ocupa oito (8) para campos numéricos e nove (9) para campos de texto. O provavelmente esses campos úteis são:

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

Enumerar as tabelas e campos e suas propriedades

Có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.
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 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 Excel

O 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:

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

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:
316934Como usar o ADO.NET para recuperar e modificar registros de uma planilha do Excel Visual Basic .net
Para obter informações adicionais, clique no números de artigo abaixo para visualizar os artigos na Base de dados de Conhecimento da Microsoft:
295646 Como transferir dados da fonte de dados ADO para o Excel com o ADO
246335 Como transferir dados do conjunto de registros ADO para o Excel com a automação
247412 INFO: Métodos para transferir dados para o Excel de Visual Basic
278973 EXEMPLO: ExcelADO demonstra como utilizar ADO para ler e gravar dados em pastas de trabalho do Excel
318373 Como recuperar metadados do Excel usando o método GetOleDbSchemaTable não no Visual Basic .net

Propriedades

ID 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:
  • 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á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

Submeter comentários