我知道这是可以做到的。我特此引用我多年前遇到的一些东西,并为将来可能的
Excel VBA具有VBE对象,其对象层次结构简化版本是:
VBE
VBProject
VBComponent
CodeModule
Designer
属性
参考
VBProject对象应该是您作为开发人员正在寻找的,因为通过它的手段,您还可以编写用于添加和删除VBA模块或插入VBA代码的
代码但是,当
VBA宏尝试修改VBA项目中的组件时,Keith错误消息会告诉您安全问题,这取决于Excels信任中心对话框中的设置。您可以查看和更改此设置如下:
- 选择文件 ->选项
- 在 Excel 选项对话框中,单击“信任中心”选项卡
- 在“信任中心”选项卡中,单击“信任中心设置”按钮
- 在“信任中心”对话框中,单击“宏设置”选项卡
或者,可以使用“开发人员代码”“宏安全”命令直接转到一个对话框,其中包含一个标记为“信任对 VBA 项目对象模型的访问”的复选框,该对话框应默认情况下处于关闭状态。即使您选择信任工作簿中包含的宏,如果关闭此设置,宏也无法修改 VBA 项目。此设置适用于所有工作簿:您无法仅针对特定工作簿更改此设置。
要通过VBA检测此设置,请尝试访问VBProject对象,然后检查错误,如以下代码所示:
- On Error Resume Next
- Set x = ActiveWorkbook.VBProject
- If Err 0 Then
- MsgBox Your security settings do not allow this macro to run.
- Exit Sub
- End If[
- On Error GoTo 0
作为创建项目的开发人员,您需要启用对Visual Basic项目的信任访问设置
,我认为您可以找到VBComponent对象的“导出”,“删除”和“导入”方法对您的特定需求非常有用。
通过他们的方式,您可以分发用户(或自己使用它)一个工作簿,其中包含一个宏,该宏替换VBA模块以使用存储在文件中的更新版本进行更新。
希望这可以帮助你
再见 |