Je suggère que vous persévérez avec VBA pour votre norme développement avec Excel, et apprendre .NET de ce côté. Utiliser .NET est certainement la prochaine étape, mais cela rend votre développement Excel beaucoup plus difficile. En outre, VSTO n'autorise pas la création de fonctions de feuille de calcul définies par l'utilisateur ("UDF"), vous avez donc besoin d'un frontal VBA ou créez un complément COM géré sans utiliser VSTO pour cela. . En comparaison, VBA vous permet de créer des fonctions UDF avec pratiquement aucun effort. L'utilisation de .NET présente de nombreux avantages, notamment en termes de typage fort, de capacités de POO complètes et de capacité à organiser des projets de plus grande taille. mais VBA a d'énormes avantages sur .NET quand il s'agit de déploiement, ce qui est assez compliqué avec Excel lorsqu'il s'agit de .NET ou VSTO. VBA est aussi une langue plus facile à apprendre et à utiliser. Dans l'ensemble, je suggère que vous utilisiez VBA pour votre développement au jour le jour, mais apprenez VB.NET ou C# sur le côté afin que vos compétences en programmation puissent croître en dehors de l'arène Excel. Finalement, vos compétences .NET peuvent devenir suffisamment fortes pour que vous préfériez l'utiliser sur VBA, mais vous devrez devenir très bon pour .NET pour ce jour à venir.
(. Pour une autre opinion similaire à ce sujet, voir Do I lose the benefits of macro recording if I develop Excel apps in Visual Studio?)
Edit: Mise à jour concernant le commentaire de Andy, ci-dessous:
Des questions telles que le déploiement, le débogage et UDFs étaient ceux que je cherchait des informations de comparaison sur. A en juger par les réponses à la question que je aurais dû mentionner que je 5+ ans d'expérience avec C#, alors que mes compétences en VBA (ou manque de ceux-ci) ne sortent 3 ou 4 fois par décennie
Ok oui, vous auriez dû dire! La plupart des gens avec des questions comme celles-ci sont des programmeurs VBA qui cherchent à entrer dans .NET. J'ai donc mal compris.
Dans votre cas, vous devriez utiliser C#, mais je suggère fortement d'utiliser C# 4.0 sur Visual Studio 2010 pour cela, cela améliorera grandement la syntaxe requise pour fonctionner avec un modèle d'objet COM tel qu'Excel. VS 2010 est actuellement en beta 2 et la date RTM est fixée au 12 avril, nous y sommes donc presque.
En ce qui concerne le déploiement, avec votre expérience, je ne pense pas que vous aurez trop de problèmes avec les packages d'installation ou les Studio Tools comme et Visual pour Office (VSTO) est excptionally bon pour deux choses:
Création d'un arrangement de ruban personnalisé pour votre complément via un concepteur de glisser-déposer. Sans le concepteur de glisser-déposer, vous devez fournir XML à la place. XML est très bien si vous me demandez, mais le concepteur de glisser-déposer est vraiment un rêve à utiliser
Utilisation des contrôles .NET sur une feuille de calcul. Je ne sais pas si cela fait partie de ce que vous envisagez de faire, mais VSTO permet aux contrôles .NET d'être utilisés sur la feuille de calcul. C'est une très bonne fonctionnalité pour un programmeur .NET car ces contrôles sont un peu plus lisses et sont spécialement conçus pour fonctionner avec .NET.
Malheureusement, VSTO est uniquement disponible pour Excel 2003 et au-dessus et je pense que vous devez créer des compléments séparés pour Excel 2003 et Excel 2007. COM managés compléments faites sans utiliser VSTO, d'autre part , peut être rendu compatible pour Excel 2000 et au-dessus sans difficulté. Enfin, VSTO ne prend pas en charge la création de fonctions UDF et, par conséquent, vous devez créer un complément d'automatisation géré pour cela ou utiliser un frontal VBA qui appelle vos fonctions VSTO.
Dans l'ensemble, je voudrais aller avec VSTO si vous pouvez vous limiter à Excel 2007 et au-dessus. Je considérerais VSTO si vos conditions sont pour Excel 2003 et au-dessus. Et je voudrais aller avec un add-in COM géré si vous devez être en mesure de fonctionner sur les versions Excel 2000 et supérieures.
Pour la prise en charge UDF, je créer un complément d'automatisation géré, qui serait viable pour Excel 2002 et versions ultérieures. Si vous avez besoin d'UDF sur Excel 2000 ou inférieur, vous aurez besoin d'un frontal VBA qui appelle les méthodes COM-visible dans votre assembly .NET.
Ce sont les avantages et les inconvénients de base, comme je le vois. Faites-moi savoir si vous avez besoin d'en savoir plus.
- Mike
http://stackoverflow.com/questions/1348928/pros-and-cons-of-vb-vba –