2010-11-27 22 views
1

Je suis très nouveau Visual Studio (version téléchargée en 2010 Professional), mais je crois que c'est la bonne façon de faire des services Web dans Excel. J'ai créé un Add-In Excel 2007 appelé TestAPI dans Visual Studio contenant une seule classe ThisAddIn, les 2 procédures StartUp et Shutdown par défaut et 2 fonctions que j'ai écrites moi-même, disons f1 et f2. Lorsque je démarre Excel 2007 et que je vérifie les options Excel, je peux le voir comme un ajout COM, mais comment puis-je voir ces 2 fonctions dans VBA? Toutes les références à ThisAddIn ou TestAPI ou f1 ou f2 échouent tous, mais si je mets quelque chose dans les fonctions de démarrage, cela sera automatiquement exécuté chaque fois que je démarre Excel, ce que je trouve assez ennuyeux. Il semble que les compléments COM sont activés/désactivés au niveau Excel alors que je n'arrive pas à trouver le TestAPI n'importe où sur ma liste sur les références (où je pourrais vérifier ou décocher au besoin selon la feuille Excel).Appel de compléments Visual Studio Excel à partir d'Excel 2007

Il me manque probablement un (ou plusieurs) point (s).

Répondre

2

Paul Stubbs dispose d'informations sur l'appel des fonctions UDF VSTO de VBA au his blog.

Vous pouvez également essayer de créer un complément COM vanilla pour Excel, comme décrit par Eric Carter.

Ma préférence personnelle pour la création de fonctions définies par l'utilisateur est d'utiliser ExcelDna.

+0

Merci, a fait des progrès sur la base ci-dessus (panneton était ajouter le ComVisible), donc je peux maintenant voir le et utiliser les fonctions. Je ne sais toujours pas comment exposer un type défini par l'utilisateur (classe ou structure). Essayer de refléter la fonction ne marche pas dans vba (même pas compiler) puisque tout semble être fait au moment de l'exécution à travers les objets. – Rob

+0

Ci-dessus sont des liens très utiles. J'ai trouvé que pour mon but je ferais mieux de simplement créer une DLL de bibliothèque de classes et d'ajouter comme référence si nécessaire. – Rob

0

Avez-vous déclaré F1 et F2 Public? Dans la classe ThisAddin

Public Shared Function F1(x as Object) as Object 
    Return x*2 
End Function 

(Je ne sais pas si elle est partagée est nécessaire VSTO, j'utilise Addin Express, VSTO est une douleur)

+0

Déjà déclaré fonctions publiques. Partagé ne semble pas nécessaire si ComVisible est correctement défini. – Rob