我有一个 Excel 加载项,它使用其工作簿中的工作表来保存一些首选项数据(例如,用户窗体上 refEdit 控件的最后使用的值)。
然后,当用户表单中的首选项发生更改时,我使用 vba
thisworkbook.save
保存加载项工作簿。
我发现这有时会在 myDocuments 中创建 xlsm 文件,而不是将加载项保存到位(另请参阅保存后在我的文档中创建 excel 加载项的副本)。
如何将加载项保存到位(在加载项文件夹中)而不创建副本?注意
activeworkbook.save
不起作用,因为它保存打开的工作簿而不是加载项。
我也可以为首选项创建一个临时文件,但使用加载项工作簿中的工作表似乎是存储数据的好地方。
据我所知,您不能将文件另存为加载项并使用该文件上的工作表。
加载项文件是仅 VBA 文件。
您说您想保存工作表上的设置。那么使用注册表呢?
将数据保存到注册表非常容易(在我看来实际上比单元格更容易)。
要保存设置:
SaveSetting "MyAddIn", "Settings", "Username", "BOB"
上面的行在 Windows 注册表中创建一个值为“BOB”的值 作为“用户名”。
要从您使用的注册表中获取设置:
Username = GetSetting("MyAddIn", "Settings", "Username")
您可以阅读有关方法这里
将其保存在注册表中而不是保存在工作表中的好处是,您不会意外删除或操纵数据。
我找到了答案:用户打开了两份 Excel 副本(2016 年和 2010 年)。这导致加载项文件被 Excel 的两个打开副本之一锁定,这意味着第二个副本以只读方式打开加载项并且无法保存更改。
一个罕见的错误,也是我没有预见到的。我将重写以将首选项保存到 %appdata% 文件中。
我建议人们避免将
thisworkbook.save
与插件一起使用。
感谢大家的帮助。
我编写了一个用于数据验证的 VBA 代码,它将通过 Excel 中的快速访问工具栏在任何工作簿中运行,但是当我运行此代码时,它是 xlsx 文件,并将工作簿保存到不同的位置并关闭它,当我重新打开它时,列表再次打开不反映给定的特定列