复制工作表到一个新的工作簿,但只携带一个macros。 这可能吗?

我的一个报告工作手册将数据分成单独的表格,然后分别到各个办公室。 问题是我的报告工作簿都有很多我使用的macros,但是我不希望别人进入或获取。 我希望它inheritance了几件事情,主要是工作表变更和closures事件(或者一个macros)。 基本上每个办公室都必须validation和logging需要改变的事情。 如果可能的话,我一直在试图使用什么方法。 我的select是:

1)在工作簿更改事件中包含一个更新date列,用户窗体提示将他们的姓名作为“最后编辑者”input为closures事件之前; 要么
2)用一个命令button包含一个macros,用户点击该button来创build一个自动包含当前date的用户表单和一个用于input姓名的框。 当用户单击确定表单closures时,工作簿将保存并closures。

假设我不想为每个单独的工作簿设置相同的代码,是否可以在我的报告工作簿中创build所有这些工作簿,然后创build一个创build个人工作簿的macros(我已经可以做了),然后只复制上述指定任务的编码/macros(我不知道从哪里开始)?

您可以使用此过程将一些VBA代码从工作簿复制/粘贴到另一个:

Sub CopyModule(SourceWB As Workbook, strModuleName As String, _ TargetWB As Workbook) ' copies a module from one workbook to another ' example: ' CopyModule Workbooks("Book1.xls"), "Module1", _ ' Workbooks("Book2.xls") Dim strFolder As String, strTempFile As String strFolder = SourceWB.Path If Len(strFolder) = 0 Then strFolder = CurDir strFolder = strFolder & "\" strTempFile = strFolder & "~tmpexport.bas" On Error Resume Next SourceWB.VBProject.VBComponents(strModuleName).Export strTempFile TargetWB.VBProject.VBComponents.Import strTempFile Kill strTempFile On Error GoTo 0 End Sub 

然后使用:

 CopyModule Workbooks("Book1.xls"), "Module1", Workbooks("Book2.xls") 

在这里find