Select the product you need help with
Como transferir dados de um conjunto de registros ADO para o Excel com a automaçãoID do artigo: 246335 - Exibir os produtos aos quais esse artigo se aplica. Nesta páginaSumário É possível transferir o conteúdo de um conjunto de registros ADO para uma planilha pela automação do Excel. A abordagem que pode ser usada depende da versão do Excel que você está automatizando. O Excel 97, o Excel 2000 e o Excel 2002 têm um método CopyFromRecordset que pode ser usado para transferir um conjunto de registros para um intervalo. O CopyFromRecordset no Excel 2000 e 2002 pode ser usado para copiar um conjunto de registros DAO ou ADO. Porém, o CopyFromRecordset no Excel 97 suporta apenas conjuntos de registros DAO. Para transferir um conjunto de registros ADO para o Excel 97, é possível criar uma matriz a partir do conjunto de registros e preencher um intervalo com o conteúdo da matriz. Este artigo discute as duas abordagens. O código de exemplo apresentado ilustra como você pode transferir um conjunto de registros ADO para o Excel 97, Excel 2000, Excel 2002, Excel 2003 ou Excel 2007. Mais Informações O código de exemplo fornecido abaixo mostra como copiar um conjunto de registros ADO em uma planilha do Microsoft Excel usando a automação do Microsoft Visual Basic. Primeiro, o código verifica a versão do Excel. Se o Excel 2000 ou 2002 for detectado, o método CopyFromRecordset será usado pois é eficiente e solicita menos código. Entretanto, se o Excel 97 ou versão anterior for detectado, o conjunto de registros será copiado primeiro em uma matriz usando o método GetRows do objeto do conjunto de registros ADO. A matriz é então transposta de modo que os registros estejam na primeira dimensão (em linhas), e os campos estejam na segunda dimensão (em colunas). Em seguida, a matriz é copiada em uma planilha do Excel ao atribuí-la a um intervalo de células. (A matriz é copiada em uma etapa, em vez de fazer loops em cada célula na planilha.) O exemplo de código usa o banco de dados de exemplo Northwind incluído no Microsoft Office. Se você selecionou a pasta padrão ao instalar o Microsoft Office, o banco de dados estará localizado em: \Program Files\Microsoft Office\Office\Samples\Northwind.mdb Se o banco de dados Northwind estiver localizado em uma pasta diferente no seu computador, será necessário editar o caminho do banco de dados no código fornecido abaixo. Se você não tiver o banco de dados Northwind instalado no seu sistema, será possível usar a opção Adicionar/Remover para que a configuração do Microsoft Office instale os bancos de dados de exemplo. Observação O banco de dados Northwind não é instalado ao instalar o Microsoft Office 2007. Para obter o Northwind 2007, visite o seguinte site da Microsoft: http://office.microsoft.com/pt-br/templates/TC012289971046.aspx?pid=CT101428651046
(http://office.microsoft.com/pt-br/templates/TC012289971046.aspx?pid=CT101428651046)
Etapas para criar exemplo
Para eficiência e desempenho, CopyFromRecordset é o método preferido. Como o Excel 97 suporta apenas conjuntos de registros DAO com o CopyFromRecordset, se você tentar transmitir um conjunto de registros ADO para o CopyFromRecordset com o Excel 97, a seguinte mensagem de erro será exibida: Erro de tempo de execução 430: A classe não suporta a Automação ou não suporta a interface esperada. Observação Ao usar o CopyFromRecordset, você deve estar ciente de que o conjunto de registros ADO ou DAO usado não pode conter campos objeto OLE ou dados de matriz, tais como conjuntos de registros hierárquicos. Se você incluir campos de ambos os tipos em um conjunto de registros, o método CopyFromRecordset irá falhar com o seguinte erro: Erro de tempo de execução -2147467259: Falha no método CopyFromRecordset do objeto Range. Se o Excel 97 for detectado, use o método GetRows do conjunto de registros ADO para copiar o conjunto de registros em uma matriz. Se você atribuir a matriz retornada por GetRows a um intervalo de células na planilha, os dados irão para as colunas em vez de irem para as linhas. Por exemplo, se o conjunto de registros tiver dois campos e 10 linhas, a matriz será exibida como duas linhas e 10 colunas. Portanto, você precisa transpor a matriz usando a função TransposeDim() antes de atribuir a matriz ao intervalo de células. Ao atribuir uma matriz a um intervalo de células, existem algumas limitações a saber: As limitações a seguir aplicam-se ao atribuir uma matriz a um objeto Range do Excel:
Erro de tempo de execução 13: Tipo incompatível
Erro de tempo de execução 5: Argumento ou chamada de procedimento inválida Erro de tempo de execução 1004: Erro definido por objeto ou definido por aplicativo Referências
Para obter informações adicionais sobre as limitações ao transferir matrizes para várias versões, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
177991 Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft (alguns artigos podem estar em inglês):
(http://support.microsoft.com/kb/177991/
)
XL: Limitações ao transferir matrizes para o Excel usando automação
146406
(http://support.microsoft.com/kb/146406/PT-BR/
)
XL: Como recuperar uma tabela do Access no Excel usando DAO215965
(http://support.microsoft.com/kb/215965/
)
XL2000: 12:00:00 AM exibido para datas anteriores ao ano de 1900
243394
(http://support.microsoft.com/kb/243394/
)
Como usar MFC para copiar um conjunto de registros DAO no Excel com a automação
247412
(http://support.microsoft.com/kb/247412/
)
INFO: Métodos para transferir dados do Visual Basic para o Excel
PropriedadesID do artigo: 246335 - Última revisão: sexta-feira, 28 de dezembro de 2007 - Revisão: 5.0 A informação contida neste artigo aplica-se a:
| Traduções deste artigo
|


Voltar para o início








