打包和分发Excel应用程序的最佳方法是什么?

我已经写了一个基于Excel的数据库报告工具。 当然,所有的VBA代码都与一个XLS文件相关联。 用户通过单击工具栏上的button生成报告。 不幸的是,除非用户使用另一个文件名保存文件,否则所有报告的数据都将被清除。

当我在Word中创build类似的工具时,我可以将所有的代码放在一个模板(.dot)文件中并从那里调用它。 如果将模板文件放在Office启动文件夹中,则每次启动Word时都会启动该文件。 有没有类似的方式,在Excel中打包和分发我的代码? 我试过使用加载项,但是我没有find从应用程序窗口调用代码的方法。

您可以修改存储在Excel启动目录中的用户的personal.xls文件(因Office版本而异)。 如果你有很多用户,那可以很费劲。

解决您的问题的另一种方法是将macros存储在模板(.xlt)文件中。 然后,当用户打开它,他们不能将其保存在原始文件,但必须指定一个新的文件名保存为。 这种方法的缺点是,您随后会在每个保存的文件的全部位置获得原始代码的多个副本。 如果修改了原始的.xlt文件,并且某个人在之前保存的.xls文件中重新运行了旧的macros,那么事情就会变得不协调。

简单的将你的代码移动到一个Excel Addin(XLA)中 – 在启动时(假设它在%AppData%\ Microsoft \ Excel \ XLSTART文件夹中)加载,但是如果它是一个插件,而不是工作簿,那么只有你的macros和已定义的启动函数将被加载。

如果函数依赖于电子表格本身,那么您可能需要使用模板和插件的组合。

我正在分发这样一个应用程序的一部分,我们有Word,Excel和Powerpoint(XLA,PPA,DOT)以及Office 2007'ribbon'版本(DOTM,XLAM和PPAM)

插件启动代码创build工具栏button,如果他们没有find,这意味着在任何工作簿/文档/等他们可以简单地点击工具栏button来运行我们的代码(我们有两个动作button和一个button,显示设置对话框)

模板不是真正的VBA代码的方式去,Addins绝对是要走的路…

因此,要在启动时加载工具栏,我们使用类似..(检查是否存在工具栏 – 代码将为每个打开的工作表运行,但工具栏对于用户会话是持久的)

Public Sub Workbook_Open() ' startup code / add toolbar / load saved settings, etc. End Sub 

希望帮助:)

我总是使用加载项(xla)/模板(xlt)组合。 您的加载项创build菜单(或其他UI入口点)并根据需要加载模板。 它还将要保留的数据写入数据库(Access,SQLServer,文本文件甚至xls文件)。

第一条规则是保持你的代码与你的数据分开。 然后,如果以后有错误修复或其他代码更改,则可以发送新的加载项,并且所有模板和数据库都不受影响。

你看过ClickOnce部署Excel文件吗?

怎么样保存Excel只读权限的networking文件夹? 身份validation可以使用集成的Windows身份validation完成,并且不需要将连接密码存储在VBA中的数据库中。 然后,您只需要将链接分发给您的用户一次。 如果您要更新,则只能更改该文件夹中的数据,而无需用户注意。