Excel 将工作表复制到新工作簿,但仅携带一个宏。这可能吗?
我的一本报告工作手册将数据拆分为单独的工作表,然后将其发送到各个办公室。问题是,我的报告工作簿中都有大量我使用的宏,但我不希望其他人进入或掌握这些宏。我希望它能延续一些东西,主要是工作表更改和关闭事件(或者宏)。基本上,每个办公室都必须核实和记录任何需要更改的内容。如果可能的话,我一直在犹豫尝试使用什么方法。我的选择是: 1) 包括一个日期列,通过工作簿更改事件中的某些内容进行更新,以及一个用户表单提示,将其名称输入为“上次编辑人”,作为关闭前事件;或Excel 将工作表复制到新工作簿,但仅携带一个宏。这可能吗?,excel,vba,Excel,Vba,我的一本报告工作手册将数据拆分为单独的工作表,然后将其发送到各个办公室。问题是,我的报告工作簿中都有大量我使用的宏,但我不希望其他人进入或掌握这些宏。我希望它能延续一些东西,主要是工作表更改和关闭事件(或者宏)。基本上,每个办公室都必须核实和记录任何需要更改的内容。如果可能的话,我一直在犹豫尝试使用什么方法。我的选择是: 1) 包括一个日期列,通过工作簿更改事件中的某些内容进行更新,以及一个用户表单提示,将其名称输入为“上次编辑人”,作为关闭前事件;或 2) 包括一个宏,该宏带有一个命令按钮,用
2) 包括一个宏,该宏带有一个命令按钮,用户单击该按钮可打开一个用户窗体,该窗体自动包含当前日期和一个供用户输入姓名的框。当用户单击“确定”时,表单关闭,工作簿保存并关闭
假设我不想为此使用相同的代码设置每个单独的工作簿,是否可以在我的报告工作簿中创建所有这些,然后创建一个宏来创建单独的工作簿(我已经可以这样做了),然后只复制上面指定任务的编码/宏(我不知道从哪里开始)?您可以使用以下步骤将某些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")
找到您可以使用以下步骤将某些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")
找到类似这样的。将在我的测试文件夹中修补它,但对答案点头。谢谢!像这样。将在我的测试文件夹中修补它,但对答案点头。谢谢!