2009-10-13 4 views
0

Je vois beaucoup sur le web à propos de VSTO et d'automatiser Excel de C#, mais très peu pour commencer à câbler un assemblage C# pour le rendre visible depuis Excel. Est-ce que quelqu'un peut me diriger vers quelques informations très simples expliquant comment créer une interface COM, GUIDS, ComVisible, etc?com interop: comment consommer C# à partir d'Excel ou Access

Répondre

2

Fondamentalement, tout ce que vous devez faire est

  1. Faites votre assembly COM visible en utilisant l'attribut respectif dans la propriété projet informations sur la version de l'Assemblée de dialogue
  2. Pour chaque classe publique, ajoutez le bloc suivant (voir [1 ]) du code ci-dessus la définition de classe
  3. enregistrer DLL à l'aide de l'outil regasm.exe trouve dans le dossier d'installation .NET 2

aussi, assurez-vous pour ajouter un nom descriptif au nom et à la description de l'application dans la boîte de dialogue Informations sur la version de l'assemblage (ils sont ensuite utilisés pour sélectionner les classes COM).

[1] Bloc de code pour ajouter avant la définition de classe:

[ClassInterface(ClassInterfaceType.AutoDual)] 
[ProgId("SomeNameHere")] 
[ComVisible(true)] 
[Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx")] 

Après cela, vous devriez être en mesure d'utiliser la classe comme une autre classe normale COM.

EDIT
Il convient de noter que je n'ai pas l'expérience avec des classes Excel et C# COM - J'utilise C# avec Microsoft Navision, qui fonctionne très bien la façon dont je l'ai décrit ci-dessus.

2

Il existe de nombreux livres qui pourraient vous aider à démarrer. "Pro C# 2008" de Wrox a un grand chapitre à ce sujet. En outre, voici un article MSDN blog sur COM Visible à Excel.

1

Plutôt que de descendre la route COM, il est considérablement plus facile (et moins d'un problème d'installation) d'utiliser quelque chose comme ExcelDNA. Il vous permet d'écrire des XLL dans .Net qui ne nécessitent pas d'inscription. C'est aussi un système open-source et très bien supporté par la communauté.

+0

Je devrai me pencher là-dessus. Merci – Nick

Questions connexes