你如何使用vba插件并制作安装程序?

时间:2013-08-23 07:30:57

标签: excel vba excel-vba vb6

我已经编写了一个vba模块,可以为excel安装一个addin按钮。我想尽可能简单地在许多计算机上部署它。目前,这些是我的步骤。

  1. 将excel保存为* .xlsm
  2. 在我要安装的计算机上打开文档
  3. 将文档另存为扩展名(* .xlam),将其放入addin文件夹
  4. 转到选项>加载项>管理/转到>
  5. 点击我的添加
  6. 复选框

    有没有办法自动化这个过程?用vb写一些东西?

5 个答案:

答案 0 :(得分:4)

您可以使用Advanced Installer(the free edition)等工具构建exe或msi安装程序。您可以做的一件事是将文件复制到特定位置,如果将其放在XLSTART文件夹中,则在启动Excel时该加载项将自动加载给用户。 Excel程序文件目录中有一个免费文件夹,通常是这样的

C:\ Program Files(x86)\ Microsoft Office \ Office15 \ XLSTART

如果你将xlam文件放入该文件夹,它们也会默认加载。用户特定选项是

C:\用户[用户名] \应用程序数据\漫游\微软\ EXCEL \ XLSTART

两种型号都有PROS / CONS。一个是所有用户都可以访问,或者只是安装的用户。用户特定选项的好处是它需要有限的安装权限(无管理员权限)

答案 1 :(得分:2)

正如其他人所说,您可以轻松地将文件复制到每个用户Apps目录中的所需文件夹中。然后,他们需要选中加载项菜单中的框,但至少文件将在那里。我通过将加载项和.bat文件放在每个人都可以访问的共享驱动器上来成功地使用它。然后,您可以只提供.bat文件的链接,该文件将文件从共享驱动器复制到其Apps目录中的个人计算机。这是我使用的示例.bat:

xcopy "\\server\share\folder\Addins\CRWScleanup.xlam" "%APPDATA%\Microsoft\AddIns\" /y

最初我设置了.bat文件以检测和处理Win7和WinXP,因为我们有混合工作,但后来我意识到%APPDATA%之后的文件夹位置(这导致XP与Win7的不同位置)对于每个版本的Windows都是相同的。即\ Microsoft \ AddIns \%APPDATA%是一个全局Windows变量,其值将因每个用户而异(这很好)。

安装外接程序后,它的工作非常出色,因为要更新它,我只需将新版本放在共享驱动器上,并让用户在Excel关闭时单击指向.bat的链接。新版本将被复制,用户无需执行任何操作。

答案 2 :(得分:1)

使用VBA,您必须依赖Office文件(在本例中为Excel文件),并且无法移动到可执行文件/安装包。您可以创建一个程序(或宏)以自动方式执行所需的步骤。但是,如果您想要的是依赖于用户可能执行的标准安装包(通常在安装程序时),则必须转到VB.NET。

VB.NET和VBA并没有太大不同(嗯......实际上,VB.NET包含了很多东西,但“理解”了大部分的VBA代码)而VB.NET对程序员来说非常友好;所以从VBA到VB.NET的转换不会花费太长时间。在VB.NET中,您可以使用不同的方式与Excel交互;从您的问题,我知道您需要加载项替代方案:它生成一个自定义的“安装包”,一旦单击,将安装目标计算机中的给出Excel加载项。依赖此选项很简单:在Visual Studio中(您需要使用VS来使用VB.NET),打开“新建项目”,然后在Visual Basic模板中选择Office(,您的版本)和Excel加载项。

注意:useful link提供了我的Mehow:它指的是一个旧的VS(2008),但从那时起事情没有太大变化。

注2:自2008年起,任何收费的VS版本都可以使用上述建议。不确定免费版本(快速版)的支持。

答案 3 :(得分:0)

最简单的方法是在打开时向xlsm文件添加一些安装代码 然后,此代码可以执行以下操作:

  • 通过更改工作表上的变量来关闭安装代码(这样会 停止下次打开文件时运行的打开代码;;
  • 将文件的副本另存为xlam到加载项文件夹;
  • 激活加载项;
  • 然后关闭xlsm文件。

然后,您需要做的只是通过电子邮件发送xlsm文件,然后让人们打开它。

代码非常简单,但我可以根据需要显示。

答案 4 :(得分:0)

我研究了很多上述方法以及其他站点上的方法,但是设法使用Excel加载项(* .xlam)自己创建了自己的安装和卸载程序。现在,我的加载项是第一次自行安装,我也有一个卸载脚本。奇迹般有效。

我使用了自己对Ivan解决方案的改进和衍生”:https://grishagin.com/vba/2017/01/11/automatic-excel-addin-installation.html