gpt4 book ai didi

vba - Excel Addin 自动化运行问题

转载 作者:行者123 更新时间:2023-12-03 03:20:13 29 4
gpt4 key购买 nike

当前进度:

我创建了一个 Excel 宏来保护/取消保护客户的工作簿。由于每次打开和关闭工作簿时都需要运行宏,因此 Excel 加载项似乎是最可行的。问题在于它们的文件结构的设计方式。此需要处理的 Excel 文件数量约为 900 个。因此,为每个文件使用 Workbook_Open() 并不可行。

我转到“开发人员”选项卡,选择“Excel 加载项”,然后选择“自动化”(文件 -> 选项 -> 加载项 ->“Excel 加载项”,然后选择... -> 自动化)。我看到了一个项目列表,但根据我的理解,没有任何与此加载项相关的内容。

问题:

  • 最好有办法在每次打开和关闭工作簿时自动执行此加载项吗?
  • 如果必须手动完成加载项,则应如何为用户实现?
  • 如何使用自动化?它提供了哪些我不理解的自动化功能?

其他详细信息:

  • 客户有多人访问文件,需要为他们保护文件。

解决方案:

ThisWorkbook 模块中的解决方案。

Option Explicit

'Key Variable
Private XLApp As ProtectUnprotect

'Initializing
Private Sub Workbook_Open()
Set XLApp = New ProtectUnprotect
End Sub

ProtectUnprotect 类模块的解决方案。

Private WithEvents App As Application

Private Sub Class_Initialize()
Set App = Application
End Sub

'Unprotecting Workbook
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
Stop
'-- Code to run here
End Sub

最佳答案

为了在任何工作簿打开时运行,您需要捕获应用程序对象并向其附加一个事件。

这个例子来自 Chip Pearson: http://www.cpearson.com/excel/AppEvent.aspx

Private WithEvents App As Application

Private Sub ProtectUnprotect_Initialize()
Set App = Application
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
' ---Put your code here---
End Sub

要使其正常工作,请将代码放入“类模块”中,并更改 Private Sub ProtectUnprotect_Initialize() 行以使用您为类模块指定的名称。它必须与模块名称完全匹配,因为您要重写模块的“_Initialize”方法。

完成后,将工作簿保存为插件。为了向客户进行部署,我建议制作一个执行所有设置步骤的安装程序。否则,部署到多台机器上的用户体验将会很差。

以下是如何制作和安装插件的示例: https://www.fontstuff.com/vba/vbatut03.htm

关于vba - Excel Addin 自动化运行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51140593/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com