L'appel de code VBA à partir de Java
Salutations StackOverflow,
J'ai cherché sur le grand Internet et ont été grevés par de nombreux déchets de postes, ou des réponses qui expliquent l'exact inverse de ce que je suis d'essayer.
J'ai un fichier Excel avec un grand nombre de code VBA. Il y a 4 sous-programmes qui prennent pas de paramètres qui peuvent être appelés par l'utilisateur lorsque le document est ouvert dans Excel, ces manipuler les données dans les différentes feuilles que nécessaire. Nous avons une grande application Java que nous tenons à interagir avec ce document en appelant les Macros à partir de l'environnement Java. Le point est que nous n'avons qu'à écrire le code VBA une fois et puis Java peuvent appeler pour l'exécution. En outre, nous voulons nous supposons que l'utilisateur de l'application Java n'est pas nécessairement un accès immédiat à Excel, mais fonctionne sur une machine Windows. Comment doit-on faire?
Ne nous compiler le code VBA dans une DLL, et de l'appeler à partir de l'intérieur de Java? Comment compiler la DLL, ne nécessitant l'utilisation de Visual Studio? Comment pouvons-nous appeler la DLL à partir de Java? Devrions-nous essayer une certaine sorte d'objet COM?
Veuillez noter que, comme la plupart des communes de réponse à ma question d'ailleurs, je comprends tout à fait clairement comment appeler Java dans VBA, mais de ne pas appeler le VBA à partir de Java.
Vous en remercie d'avance.
Oui, le document Excel est local pour le programme Java, et le programme Java est entièrement du côté client.
Avez-vous regarder ce stackoverflow.com/questions/2805763/...?
VBScript et VBA ne sont pas la même chose, donc j'hésite à dire que c'est la solution finale. Aussi, il demande à l'utilisateur d'avoir Excel sur leur machine. C'est quelque chose que nous sommes flexibles sur, mais serait plutôt de ne pas l'exiger. Est possible de le faire sans l'installation de la suite Office sur l'ordinateur du client? Nous pouvons le faire pour créer la Dll, mais serait plutôt de ne pas le mandat de l'utiliser.
Si vos données dans Excel, et vous souhaitez appeler des macros Excel dans le document à traiter les données, mais vous ne voulez pas exiger Excel soit installé sur le client. Je ne peux pas voir comment cela va fonctionner: même lorsque vous l'avez trouvé comment appeler VBA à partir de Java, si il n'y a pas Excel qui semble être un peu une barrière...
OriginalL'auteur Reivax | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
En gros, je vois trois options pour appeler du code VBA dans Excel à partir d'une application Java:
Java COM Pont: Il existe plusieurs outils qui vous permettent d'appeler des COM ou COM de composants d'Automatisation à partir de Java. Excel est un tel composant. Je sais de Jacob et JCom, mais il serait peut-être plus de tels outils.
Java /VBScript /Automation COM: Puisque de toute évidence vous n'avez pas besoin de passer des données pour le code VBA, la solution la plus simple est sans doute d'écrire un script VBScript qui commence Excel, ouvre le document, appelle la macro et ferme Excel. Ce script est lancé à partir de Java avec
Runtime.getRuntime().exec("cmd /c start script.vbs");
JNI: Vous pourriez écrire une DLL spécifique pour vos applications. Il implémente l'interface JNI de sorte qu'il peut être appelé à partir de Java. Et sa mise en œuvre utilise COM appels à travailler avec Excel. Une DLL est mieux écrite avec VisualStudio et de soutien pour le C++ pour appeler des objets COM.
Quel que soit votre solution sera, en gros, vous voulez exécuter les commandes suivantes sur l'automatisation d'Excel (interface de l'échantillon en VBScript):
Vous ne pouvez pas compiler le code VBA dans une DLL. Il n'existe pas d'outil pour que (contrairement à la pleine Visual Basic).
J'espère que cette réponse est utile, même si je n'ai pas compris ce que tu veux dire par: "nous voulons supposer que l'utilisateur de l'application Java n'est pas nécessairement un accès immédiat à Excel, mais fonctionne sur une machine Windows."
La Clarification de votre citation de la mine: Nous supposons que le client est sur une machine Windows, mais que rien de la suite office (notamment Excel) est installé. Par conséquent, si elle exige l'ouverture d'Excel pour ce faire, il n'est pas une solution viable.
Maintenant, je suis confus... Comment avez-vous l'intention d'exécuter du code VBA sans Excel est installé? Et pourquoi voudriez-vous écrire un objet COM (dans quelle langue d'ailleurs?) et puis un wrapper (en C++ ou autre) et enfin l'appeler à partir de Java si vous avez de réécrire le code VBA de toute façon? Pourquoi ne pas le faire de nombreuses fois de plus simple et de le réécrire en Java?
OriginalL'auteur Codo