使excel文件与vba使用全局工作簿function?
我是新来的VBA和我有问题了解在Excel文件的VBA的工作簿。 我有一个名为Addin.xla的macros,这个macros被2000个文件使用。
我有的问题是,2000年的文件有它自己的这thisworkbook
这宣告了函数Workbook_BeforeClose
。 所有的2000文件都有完全相同的Workbook_BeforeClose
。
我想要做的是在所有的2000文件中更改Workbook_BeforeClose
函数。 我可以使文件在Addin.xla文件中使用Workbook_BeforeClose
函数,还是必须更改所有2000个文件的相同Workbook_BeforeClose
函数?
如果后者是这样的话,有人可以告诉我如何编写一个循环遍历所有文件的macros,并自动更新这个function?
一种解决scheme是将函数委托给插件:
Private Sub Workbook_BeforeClose(Cancel As Boolean) runCleanupCode End Sub
runCleanupCode
位于你的插件中。 这意味着如果你想在未来做出改变,你只需要把它们放在插件里。
要更改所有工作表中的代码,可以按照此示例进行操作 。
在插件中,处理Application.WorkbookBeforeClose
事件。
但是,如果你已经在2000年的文件中有相同的代码,那么你将不得不删除它。 否则,除了您将在插件中定义的处理程序之外,它还将运行。
自动删除:
添加对Microsoft Visual Basic for Applications Extensibility XX
的引用
然后在循环中打开每个文件,然后执行
With currentWorkBook.VBProject.VBComponents("ThisWorkbook").CodeModule .DeleteLines .ProcStartLine("Workbook_BeforeClose", vbext_pk_Proc), .ProcCountLines("Workbook_BeforeClose", vbext_pk_Proc) End With