如何使用 VBA 保存 Excel 加载项

问题描述 投票:0回答:3

我有一个 Excel 加载项,它使用其工作簿中的工作表来保存一些首选项数据(例如,用户窗体上 refEdit 控件的最后使用的值)。

然后,当用户表单中的首选项发生更改时,我使用 vba

thisworkbook.save
保存加载项工作簿。

我发现这有时会在 myDocuments 中创建 xlsm 文件,而不是将加载项保存到位(另请参阅保存后在我的文档中创建 excel 加载项的副本)。

如何将加载项保存到位(在加载项文件夹中)而不创建副本?注意

activeworkbook.save
不起作用,因为它保存打开的工作簿而不是加载项。

我也可以为首选项创建一个临时文件,但使用加载项工作簿中的工作表似乎是存储数据的好地方。

vba excel office-addins excel-addins
3个回答
0
投票

据我所知,您不能将文件另存为加载项并使用该文件上的工作表。
加载项文件是仅 VBA 文件。

您说您想保存工作表上的设置。那么使用注册表呢?

将数据保存到注册表非常容易(在我看来实际上比单元格更容易)。

要保存设置:

SaveSetting "MyAddIn", "Settings", "Username", "BOB"

上面的行在 Windows 注册表中创建一个值为“BOB”的值 作为“用户名”。

要从您使用的注册表中获取设置:

Username = GetSetting("MyAddIn", "Settings", "Username")

您可以阅读有关方法这里

将其保存在注册表中而不是保存在工作表中的好处是,您不会意外删除或操纵数据。


0
投票

我找到了答案:用户打开了两份 Excel 副本(2016 年和 2010 年)。这导致加载项文件被 Excel 的两个打开副本之一锁定,这意味着第二个副本以只读方式打开加载项并且无法保存更改。

一个罕见的错误,也是我没有预见到的。我将重写以将首选项保存到 %appdata% 文件中。

我建议人们避免将

thisworkbook.save
与插件一起使用。

感谢大家的帮助。


0
投票

我编写了一个用于数据验证的 VBA 代码,它将通过 Excel 中的快速访问工具栏在任何工作簿中运行,但是当我运行此代码时,它是 xlsx 文件,并将工作簿保存到不同的位置并关闭它,当我重新打开它时,列表再次打开不反映给定的特定列

© www.soinside.com 2019 - 2024. All rights reserved.