我已经使用excel宏准备了很多基于Excel的工具。在这些Excel Sheets中,用户通常按照该工具的指导浏览Excel文件或输入数据,然后运行我的宏以生成所需的输出。一切正常。
但是,我可以将代码转换为exe文件并将其分发给可以在其中运行该文件的用户,而不是将这些工具分发为Excel工作表吗?
我在Excel上进行了大量搜索以查找与exe相关的线程,但没有得到满意的答案,因此想到了启动新线程的方法。
答案 0 :(得分:4)
这个答案可能也不能令人满意,但事实是Excel并不是生成独立应用程序(exe)的编程工具。
因此,您需要使用像VB.NET或C#这样的 real 编程语言(和工具)重新编写项目。 VBA(用于应用程序的Visual Basic)旨在按其名称所述在应用程序中运行(例如Excel或其他Office应用程序),但不能独立运行。
如果打算单独使用应用程序,则无法仅通过转换代码(通过按按钮或其他方式)来转换代码,您将需要用另一种编程语言完全(手动)完全重写整个项目/工具。 (exe)没有Excel。
请注意,即使VBA和VB.NET使用类似的语法,也不能仅复制代码。这是2种完全不同的语言,因此需要重新编写代码。即使结果看起来相似也不一样。
答案 1 :(得分:3)
仅当您在excel之外执行此操作时,才能在Windows开发工具中编写一个程序,该程序能够在应用程序之间进行通信。为此,您可以使用许多Microsoft开发平台。 C#。
您想要做的是启动一个进程来干扰另一个进程。
操作方法很大程度上取决于目标Windows版本。这不是一个容易的话题,我不知道您是否真的想这样走。但是,如果您愿意的话,Google可以与Windows进行进程间通信。
这是一篇不错的概述文章:
https://docs.microsoft.com/en-us/windows/desktop/ipc/interprocess-communications
答案 2 :(得分:3)
您的解决方案无法满足您的需求。您真正想要的是一个可以分发给用户的加载项文件。该文件扩展了Excel并为用户提供了使用您的工具的权限,但是可以使用密码保护和隐藏该文件,以使用户不会对其感到困惑。最简单的情况是,将包含代码的工作簿保存为加载项类型的文件,但是您确实需要重写代码以明确使用哪个工作簿,因为代码中的ThisWorkbook是在其中,ActiveWorkbook是用户在使用您的插件时打开的文件。您还需要开发菜单以使用户能够访问您的工具,因为他们看不到该加载项。