Pergunta

Estamos criando um aplicativo Windows Form (C # ou VB.NET) que as necessidades para fazer referência a um objeto COM Office 2003 ou o Office 2007, dependendo da versão do Office instalado. Qual é a melhor maneira de lidar com este cenário e fazer referência ao objeto COM correta em tempo de execução?

Foi útil?

Solução

A menos que você quiser usar qualquer um dos objetos e métodos do modelo de objeto Office 2007 recém-adicionado, é bom para construir referenciando os PIAs do Office 2003, apenas certifique-se a versão correta dos PIAs é implantado no sistema de destino:

Outra maneira de contornar este problema é remover a dependência das PIAs posteriores. Devido ao alto grau de compatibilidade com versões anteriores do Office, você pode seguramente assumir que se o add-in obras sobre o Office 2003 (com os PIAs do Office 2003), então ele também deve funcionar no Office 2007 (com os PIAs do Office 2007).

(de Add-ins para várias versões do Office sem PIAs por Andrew Whitechapel)

Caso contrário, eu recomendo que você os seguintes artigos do blog por Andrew Whitechapel: você pode construir um add-in para várias versões do Office? (ver o aviso BIG que este não é oficialmente suportado pela Microsoft).

Outra opção, onde você não precisa as PIAs (isso torna a implantação muito mais fácil) seria usar ComImport , juntamente com a ligação tardia. Esta é no entanto mais lento do que usando os módulos de interoperabilidade, mas se o código de automação não está no caminho rápido isso pode ser uma boa solução. Você vai encontrar uma explicação como implementar isso no mesmo post: noreferrer suplementos para várias versões do Office sem PIAs

Outras dicas

Será que os conjuntos de interoperabilidade primária para o Office não ajuda com isso? Eu não sei ao certo como eu não tive que usá-los a sério, mas eu acho que eles fariam.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top