【发布时间】:2018-05-15 11:25:29
【问题描述】:
我有一个 Excel 加载项,它使用其工作簿中的工作表来保存一些首选项数据(例如,用户窗体上的 refEdit 控件的最后使用值)。
然后,当用户表单中的首选项发生更改时,我使用 vba thisworkbook.save 保存加载项工作簿。
我发现这有时会在 myDocuments 中创建一个 xlsm 文件,而不是将加载项保存在适当的位置(另请参阅 a copy of excel add-in is created in my documents after saving)。
如何在不创建副本的情况下将加载项保存在适当的位置(在加载项文件夹中)?注意 activeworkbook.save 不起作用,因为它保存打开的工作簿而不是加载项。
我也可以为首选项创建一个临时文件,但使用加载项工作簿中的工作表似乎是存储数据的好地方。
【问题讨论】:
-
ThisWorkbook.Save应该可以工作,假设加载项没有以只读方式打开,但我个人认为这是不好的做法。我建议您使用SaveSetting和GetSetting将首选项存储在注册表中 -
加载项保存在哪里(哪个路径)?我怀疑运行该加载项的用户没有对该路径的写入权限,而是将其保存到我的文档中。你能检查一下吗?
-
如果只读...有一个修复
ThisWorkbook.ChangeFileAccess(xlReadWrite)....!但是,是的,我同意 Rory 的偏好。或者将文件存储在 %appdata% 中。 -
谢谢大家。关于使用注册表,我的加载项只是 .xla 加载项而不是 .exe。此外,一些偏好数据存储在多单元格范围内。由于这些原因,我认为临时文件替代方案是一个更好的选择。
-
关于包含文件夹的读/写状态:它应该是读/写的,因为用户将加载项自己复制到文件夹中。代码不会返回错误,而不仅仅是将文件保存在其他地方吗?
标签: vba excel office-addins excel-addins