Páginas

sábado, 11 de maio de 2013

PasteSpecial Method Error on Powerpoint 2010

Esta semana me deparei com um problema em uma aplicação que estou desenvolvendo, ela copia um intervalo de dados do Excel e cola num slide do Powerpoint.

O problema ocorria ao utilizar o método PasteSpecial em um slide, ao ser chamado a partir do VBA ele colava as informações desconfiguradas e com problemas de cores e formatação.

Ao repetir o processo de colagem no próprio Powerpoint tudo funcionava perfeitamente, distribui o código para os colegas do trabalho para que testassem em outro ambiente e ele também funcionava num ambiente exatamente como o meu com o Windows 7 SP2 e Office 2010 SP1.

Depois de muito tentar, pesquisar e não encontrar uma solução resolvi verificar o meu código eu utilizava a criação de objetos com o Late Binding com a seguinte sintaxe

Dim pptA As Object

Fiz referência a Microsoft Powerpoint 14.0 e a alterei para a seguinte linha, utilizando o Early Binding



Dim pptA As Powerpoint.Application

Ao executar o teste o resultado obtido foi o esperado com a colagem realizada corretamente.

Em minhas pesquisas para a resolução, verifiquei o Event Viewer do Windows (pois as vezes a aplicação entrava em crash interminentemente) o problema ocorria sempre na mesma DLL ppcore.dll, ao realizar uma busca na máquina por esta DLL obtive o seguinte resultado.

   

Ou seja haviam 3 versões desta DLL na máquina, acredito que tenha a ver com a instalação do office. Não sei o histórico do ambiente do cliente , se foram realizadas migrações de versão de 2003 para 2007 ou 2007 para 2010, mas acredito que este problema ocorra por este motivo.

Como o objeto é criado em tempo de execução com o Object, a referência criada pode utilizar uma versão incorreta desta DLL, mesmo em ambientes teoricamente iguais.

Então se você chegou até aqui por este problema, tente trocar a referência e teste que deve resolver seu problema.

Com isto conseguimos contornar o problema, porém reduzimos a compatibilidade da aplicação para a versão do Powerpoint que foi referenciada, se esta aplicação for utilizada em um office 2007 ela não irá funcionar pois terá uma referência quebrada.

Obrigado a todos que me ajudaram em especial ao Marcelão que realizou o teste em outro ambiente!

0 comentários:

Postar um comentário

Related Posts Plugin for WordPress, Blogger...