我想在Excel文件上运行VBA(清理功能)但是,我希望仅限某些用户使用它。
示例是向用户发送一个.bat文件并告诉他们保存它并双击它。
但是,我将如何继续这样做?我做了一些研究并读到我需要创建VBS文件。
有人可以给我一条正确的道路吗?我应该写.batch来调用VBS来存放代码吗?
谢谢!
答案 0 :(得分:0)
我写了一个非常简短的模块来做这种事情 - 主要是将模块导出/导入为.bas文件。
您需要启用" Microsoft Visual Basic for Applications Extensibility"参考(我的是5.3 - 我不确定是否有不同的版本),但是一旦你完成了它应该可以工作
Public Sub CopyModule(Workbook1 As Workbook, ModuleName As String, Workbook2 As Workbook)
''copies a named module between two workbooks VBA projects
''also acts as a backup as it saves a copy of the module as at today's date
'set name of exported module file
wbname = Workbook1.name & "." & ModuleName & "." & Format(Now, "YYYYMMDD")
Dim filename As String: filename = "H:\ASC\Reporting Files\CMT\" & wbname & ".bas"
'define module to be copied from book 1 based on input arguments
Dim CopyModule As VBComponent
Set CopyModule = Workbook1.VBProject.VBComponents(ModuleName)
'export module
CopyModule.Export (filename)
'import module into book 2
Workbook2.VBProject.VBComponents.Import (filename)
End Sub
这里的想法是在已经打开的两个工作簿之间复制模块,并同时备份模块。但您可以将导出/导入行视为单独的例程,并在不同的时间运行它们。希望这有帮助!