从Java调用VBA代码
您好,先生 我在更大的互联网上搜索过,被无数浪费的帖子或解释与我尝试的完全相反顺序的答案所困扰 我有一个Excel文件,其中包含大量VBA代码。在Excel中打开文档时,有4个公共子例程不接受用户可以调用的参数,它们根据需要操作各种工作表中的数据。我们有一个大型Java应用程序,希望通过调用Java环境中的宏与本文档交互。关键是我们只需要编写一次VBA代码,然后Java就可以调用它来执行。此外,我们希望假设Java应用程序的用户不一定能够立即访问Excel,而是在Windows机器上操作。一个人应该怎么做呢 我们是否将VBA代码编译成DLL,并从Java内部调用它?如何编译DLL,是否需要使用Visual Studio?我们如何从Java调用DLL?我们应该尝试某种COM对象吗 请注意,作为我在其他地方的问题的最常见答案,我非常清楚如何从VBA中调用Java,而不是从Java调用VBA从Java调用VBA代码,java,vba,dll,netbeans,excel,Java,Vba,Dll,Netbeans,Excel,您好,先生 我在更大的互联网上搜索过,被无数浪费的帖子或解释与我尝试的完全相反顺序的答案所困扰 我有一个Excel文件,其中包含大量VBA代码。在Excel中打开文档时,有4个公共子例程不接受用户可以调用的参数,它们根据需要操作各种工作表中的数据。我们有一个大型Java应用程序,希望通过调用Java环境中的宏与本文档交互。关键是我们只需要编写一次VBA代码,然后Java就可以调用它来执行。此外,我们希望假设Java应用程序的用户不一定能够立即访问Excel,而是在Windows机器上操作。一个人
提前谢谢。我基本上看到了从Java应用程序调用Excel中VBA代码的三个选项:
Runtime.getRuntime().exec(“cmd/c start script.vbs”)代码>
我希望这个答案是有帮助的,尽管我不理解你的意思:“我们想假设Java应用程序的用户不一定能够立即访问Excel,而是在Windows机器上操作。”只是澄清一下,它是本地(客户端)Java应用程序?是的,Excel文档是Java程序的本地文档,Java程序完全是客户端的。你看了吗?VBScript和VBA不是一回事,所以我不敢说这是最终的解决方案。此外,它还要求用户在其计算机上安装Excel。这是我们可以灵活处理的事情,但我们宁愿不需要它。不在客户机上安装Office套件就可以完成吗?我们可以让它创建DLL,但不希望强制使用它。因此,您的数据在Excel中,您希望调用文档中的Excel宏来处理数据,但不希望要求在客户端上安装Excel。我看不出这是怎么回事:即使您已经知道如何从Java调用VBA,如果没有Excel,那么这似乎有点困难……听起来是一个很好的开始,谢谢。我想我会这样做:创建一个复制现有VBA的COM对象。然后,创建一个调用COM函数的dll,让Java加载dll,并调用其函数。请澄清我的引用:我们假设客户端位于Windows计算机上,但没有安装office套件(包括Excel)。因此,如果它需要打开Excel才能这样做,这不是一个可行的解决方案。。。您计划如何在未安装Excel的情况下运行VBA代码?为什么你要写一个COM对象(不管用什么语言?),然后写一个包装器(C++或其他什么),最后,如果你必须重写VBA代码,最后调用java。为什么不把它简化很多倍并用Java重写呢?不幸的是,这不是一个好的答案,因为没有好的答案。Jacob和提供的其他COM选项制作得很差,根本无法实现java和MS工具之间的良好集成。
Dim xl
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open ("workbook.xlsx")
xl.Application.Run "MyMacro"
xl.Application.Quit
Set xl = Nothing