我有一个 Excel 启用宏的报告作业簿,每个作业表(包括“ThisWorkBook”组件)中都有一些代码,它会生成它的无宏版本供我的老板审查。我的老板几乎总是对那个“.xlsx”档案进行一些修改,我想将我所有的书面代码转移到这本编辑过的无宏书籍并再次保存为“.xlsm”。
如何仅访问和复制这些组件内的书面代码?
uj5u.com热心网友回复:
可以复制 VBA 代码(例如,请参阅将所有 VBA 代码从作业簿复制到另一个),但这并不容易。
我会建议以下替代方案:
1)将档案作为 XLSM 档案发送以供审核。如果你想防止某些宏被执行,你可以创建一个小函式(让它成为一个函式,而不是在每个地方硬编码用户名,这样你就可以很容易地改变它)。
Function UserMacrosAllowed() As Boolean
UserMacrosAllowed = (Environ("UserName") = "milad")
End Function
然后,将以下陈述句放在不应由您的老板执行的例程的顶部,例如:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not UserMacrosAllowed Then Exit Sub
(...)
End Sub
2)如果这不可行,创建一个没有任何资料的模板档案,只包含所有代码,并将xlsx 档案的资料复制到其中。这应该容易得多。
uj5u.com热心网友回复:
使用 FunThomas 提供的链接,我想出了我的解决方案:
Sub ExportCodes()
Dim newWithMacro as workbook
For Each Component In ThisWorkBook.VBProject.VBComponents
If Component.Type = 100 And Component.CodeModule.CountOfLines <> 0 Then
Text = Component.CodeModule.Lines(1,Component.CodeModule.CountOfLines)
newWithMacro.VBProject.VBComponents(Component.Name).CodeModule.AddFromString (Text)
End If
Next Component
End sub
0 评论