2010-07-06 16 views
1

J'ai un logiciel hérité tiers qui utilise Automation pour contrôler MS Excel (à l'aide de MFC/C++). Le code est simple:Chaîne de classe non valide à l'aide d'Excel 2010

_ApplicationPtr xl; 
HRESULT hr = xl.CreateInstance("Excel.Application"); 

Cela a fonctionné parfaitement depuis Excel 2000, 2002 (XP), 2003 et 2007; Toutefois, après l'installation d'Office 2010, l'appel CreateInstance échoue avec "Invalid Class String" (CO_E_CLASSSTRING). Y at-il quelque chose de spécial que je dois faire pour que cela fonctionne?

Merci d'avance!

Répondre

1

La chaîne de classe est la partie "Excel.Application", qui, vraisemblablement, Microsoft a changé dans Office 2010.

Normalement, il est quelque chose comme « Excel9.Application » pour la valeur « réelle » et « Excel.Application » pointant vers l'entrée spécifique de la dernière version. Il est possible que le MS ait arrêté d'ajouter l'entrée du pointeur, ou que votre base de registre soit corrompue lors de la mise à niveau.

+0

Merci pour la réponse rapide, James. Je devrais mentionner que j'ai essayé le logiciel tiers sur une machine Win7 propre avec seulement Office 2010 Home & Business et le logiciel lui-même installé. – JoJoeDad

+0

D'accord, je l'ai compris. J'ai installé Office 2010 en utilisant la nouvelle méthode Click-to-run (parce que j'ai téléchargé l'essai à partir du site Web de MS en utilisant l'option par défaut). Dès que je le télécharge et l'installe en utilisant le MSI, tous les PROGID/CLSID sont maintenant dans le registre (Excel.Application et Excel.Application.14) et mon Automation fonctionne bien ... – JoJoeDad

+0

hey JoJoeDad (salutations, compatriote canadien) - -il semble que Office Starter (en raison de la fonctionnalité "cliquer pour exécuter") ne prend pas en charge l'automatisation OLE. pouvez-vous confirmer que vous avez acheté/installé une copie de bureau pour résoudre ce problème? Merci! –