如何使用 VBA 保存 Excel 加载项



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

然后,我在用户窗体中更改首选项时使用 vbathisworkbook.save保存加载项工作簿。

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

如何在不创建副本的情况下将加载项保存到原位(在加载项文件夹中(?注意activeworkbook.save不起作用,因为它保存的是打开的工作簿而不是加载项。

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

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

您说要将设置保存在工作表上。使用注册表怎么样?

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

要保存设置:

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

上行在窗口注册表中创建了一个值为"BOB"的值 作为"用户名"。

若要从您使用的注册表中获取设置,请执行以下操作:

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

您可以在此处阅读有关该方法的信息

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

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

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

我建议人们避免将thisworkbook.save与插件一起使用。

感谢大家的帮助。

最新更新