不需要可信文档?



我正在构建一个基于vba的应用程序,将有大约150个用户。它们都有自己的数据文件、表、自定义视图等。但是我需要定期更新应用程序背后的代码。所以我使用两个工作簿技术,其中他们独特的用户工作簿(称为UWs)都将控制传递给包含所有代码的代码工作簿(称为CW)。这样,当我需要更新时,我更新了CW,每个人都简单地用新的CW替换了他们文件夹中的旧CW,他们的uw保持不变。

我的问题是,我希望CW基本上保持隐藏和保护。但是对于宏安全,当他们在更新后打开他们的uw并立即调用新CW中的启动子例程时,它不会运行。他们必须首先打开CW(这是我不想要的!),并使其成为一个可信的文档,然后打开他们的uw将运行CW中的启动子例程。

这应该无关紧要,但这是UWs中唯一的代码(注意这仍处于原型/早期阶段,所以所有内容都称为"测试"!):

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Workbooks("Test CW.xlsm").Close
End Sub
Private Sub Workbook_Open()
Application.ScreenUpdating = False
'Checks to see if TestCW is present next to Test UW
On Error Resume Next
X = Workbooks("Test CW.xlsm").Name 'Sets X to name of workbook; if its not there this will throw an error and Err <> 0
If Not (Err = 0) Then  'If there's no error
On Error GoTo CWFileError
Workbooks.Open Filename:=ThisWorkbook.Path & Application.PathSeparator & "Test CW.xlsm"  'Opens Test CW if in same folder
'Makes Test CW hidden
Workbooks("Test CW.xlsm").Windows(1).Visible = False
End If
On Error GoTo 0
'Runs test module in Test CW, then returns control to here
With Application
.ScreenUpdating = True
.Run "'Test CW.xlsm'!ThisWorkbook.TestStart" 'Uses ThisWorkbook.TestSTart as TestStart is a Workbook-level subroutine in the ThisWorkbook module
End With
ThisWorkbook.Activate
Exit Sub
CWFileError:
MsgBox "Your SVEDash application file named Test CW is not in this folder." _
& vbCrLf _
& "Please locate your current SVEDash application file and place it in this folder." _
& vbCrLf _
& "This file will close to prevent damage to your data."
On Error GoTo 0
ThisWorkbook.Close
End Sub

有什么办法可以绕过这个安全问题,而不需要用户更改他们的安全设置吗?

这似乎只是第一个'更新'的问题。当我将更新的"已更新的"CW复制到文件夹中时,只要我保持名称一致,就会记住具有该名称的前一个文件的先前信任状态。希望这是一个真正的解决方案

相关内容

  • 没有找到相关文章

最新更新