我创建了一个基本上空白的工作簿,其中包含许多宏,这些宏从变量源(“仪表板”)加载数据。使用workbook_beforesave
事件,我将Save
选项劫持到一个函数中,该函数将数据保存为单独的.csv文件,然后可以在打开时将其加载到工作簿中。仪表板存储在共享驱动器上,最终用户可以在该驱动器上访问它。我有测试版和实时版。
当一个最终用户开始离开仪表板(锁定它),甚至以某种方式禁用事件并使用他们的数据保存空白工作簿时,问题就开始了。很容易从测试版本恢复,但很烦人。
在服务器上将文件设置为只读会产生许多无法解决的问题(服务器受密码保护,excel只是反复询问访问凭据)。
我的解决方案是在workbook_open事件中插入以下行:
If Left(ThisWorkbook.Name, 4) <> "TEST" Then ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
这造成了另一个问题。现在,当我单击Save
按钮时,直到我在“无法保存,因为它是只读”通知上单击OK
,然后选择了一个文件夹,才会触发workbook_beforesave事件保存它。
DisplayAlerts没有删除“无法保存”通知。
问题:我可以通过编程方式直接进入我的保存宏,解除警报并避免文件夹选择步骤吗?或者我是否需要创建自己的Save
按钮并完全回避问题?