2016-07-28 1 views
0

Il m'a été demandé de créer un complément Excel pour que les utilisateurs puissent charger une série de documents XML dans des feuilles de calcul Excel à partir d'Excel. Je vais écrire un complément et publier son emplacement pour que les gens téléchargent leurs propres copies locales à utiliser. Je voudrais idéalement avoir quelques constantes pour la VBA configurable par chaque utilisateur final, pour personnaliser leur expérience et leur fonction. Je pensais que ce serait bien d'avoir un bouton pour exécuter le complément et un autre bouton appelé "Configurer" ou quelque chose, qui modifierait les valeurs de certaines des variables dans le VBA, et enregistrer les nouvelles valeurs afin La prochaine fois que l'utilisateur ouvre Excel, le complément reste configuré pour lui. Est-ce que quelque chose comme cela est possible et avez-vous des suggestions sur le chemin que je devrais suivre pour y arriver?Excel Add-In Configurer les variables et enregistrer

Y a-t-il un moyen d'obtenir la persistance des variables? Je suppose que je devrais enregistrer les valeurs quelque part sur la version locale de l'Add-in, mais si oui, quelle est la meilleure façon de stocker un ensemble de paramètres?

Tout conseil général serait le bienvenu; Je n'ai pas encore écrit le complément, étant encore en phase de conception.

+1

Les modules complémentaires sont créés en tant que classeurs Excel. Ils disposent donc de leurs propres feuilles de calcul auxquelles ils peuvent se référer. Assurez-vous que lorsque vous les référencez dans le code du complément, vous utilisez 'ThisWorkbook' pour les feuilles du complément, et que vous utilisez' ActiveWorkbook' pour les feuilles Excel de l'utilisateur final. Ensuite, stockez simplement vos valeurs de variable dans des cellules et vous pouvez modifier ces valeurs de cellule dans les feuilles de calcul de complément pour les rendre persistantes. – tigeravatar

+0

Cela ressemble à une solution parfaite - je ne savais pas qu'ils avaient des feuilles accessibles de cette façon; tout ce que je lisais disait "assurez-vous d'utiliser ActiveWorkbook". Je ferai ce que vous suggérez. Si vous postez cela comme une réponse, je le marquerai comme tel. –

+1

Vous pouvez utiliser le registre (en supposant Windows) ou un fichier texte séparé (style "ini" ou XML) Si vous utilisez les feuilles de calcul du complément pour stocker des données, vous devez considérer comment gérer les mises à jour: vous ne pouvez pas Il suffit de publier une nouvelle version sans que vos utilisateurs aient besoin de reconfigurer leurs paramètres. –

Répondre

2

Je ne conseille pas d'utiliser des cellules pour stocker les réglages car l'utilisateur peut les mettre en place.

Toutefois, VBA prend en charge les modifications du Registre.

SaveSetting "Macro name", "Settings", "Username", "John Doe" 

Le code ci-dessus enregistrer une touche de réglage ou d'un registre appelé Username avec le nom John Doe dans le appname appelé Macro name et la section Settings.

Donc, en bref, vous avez seulement besoin de changer les deux dernières chaînes lorsque vous enregistrez de nouveaux paramètres. Les deux premiers devraient (pour vous faciliter la vie) être les mêmes tout le temps.

Les clés seront stockés dans: HCU \ Software \ VB et des paramètres du programme VBA \ Votre nom app \

Pour obtenir le réglage utilisé:

GetSetting("Macro name", "Settings", "Username") 

Une autre solution consiste à utiliser txt fichier.
C'est toujours mieux que les cellules mais pas aussi bon que le registre ci-dessus.

settings = "Username=John Doe, Worktitle=Janitor" 
MyFile = "C:\myapp\settings.txt" 
fnum = FreeFile() 
Open MyFile For Output As #fnum 
Print #fnum, settings 
Close #fnum 

Maintenant, vous disposez d'un fichier txt avec les paramètres que vous pouvez lire et analyser.

+0

Je sais que les gens autour de moi seront très méfiants de tout ce qui écrit dans le registre et je vais donc prendre la suggestion d'utiliser un fichier texte pour stocker les paramètres; cela semble un bon compromis de solution parfaite et de bonheur pour les gens en maintenant une stratégie simple et à faible risque. Si quelqu'un est intéressé par la façon de lire à partir d'un fichier texte, il existe de nombreux endroits sur le Web, y compris http://www.excel-easy.com/vba/examples/read-data-from-text-file.html –

+0

Si les gens ont peur que vous écrivez des choses au registre, dites-leur de s'occuper de leur propre entreprise. Ils sont évidemment des gens qui pensent quelque chose, mais ils ne le font pas. ** La fonction de registre vba ne peut écrire que dans un dossier spécifique du registre **. Il n'a pas d'accès illimité. Je crois qu'environ 90-95% de tous les logiciels que vous avez installés sur votre ordinateur écrit dans le registre. Donc, sauf si vous êtes une personne très peu scrupuleuse, je ne vois pas pourquoi vos amis auraient peur. La façon de faire est comme je l'ai écrit OK, mais vous avez toujours le risque de quelqu'un "vouloir tester quelque chose" – Andreas

+0

Dans le registre, seulement quelques personnes savent comment naviguer vers le bon chemin et très très peu sont prêts à manipuler les données là-bas. Ainsi, ce que vous y mettez reste. – Andreas