我正在自动创建一系列文件,尽管这些文件还只是草稿,但我必须将它们展示给相关经理。所以我想确保他们明白他们得到的文件只是初稿。
我尝试为每个新创建的文件在“打开,工作簿”事件中包含代码,使用http://www.cpearson.com/Excel/VBE.aspx中的代码来显示messagebox,并向管理器发出一些警告:
Sub CreateEventProcedure(wb, code)
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim LineNum As Long
Const DQUOTE = """" ' one " character
Set VBProj = wb.VBProject
Set VBComp = VBProj.VBComponents("ThisWorkbook")
Set CodeMod = VBComp.CodeModule
With CodeMod
LineNum = .CreateEventProc("Open", "Workbook")
LineNum = LineNum + 1
.InsertLines LineNum, " MsgBox " & DQUOTE & code & DQUOTE
End With
End Sub当我运行脚本时,我看到,在屏幕更新或调试期间,当我打开任何新创建的文件时,它在没有error...However的情况下正确地创建了代码(即,当打开文件时,消息框不显示)。仅供参考,我将文件保存为.xlsm (启用宏)
wb.SaveAs Filename:=file_path, FileFormat:=xlOpenXMLWorkbookMacroEnabled我的建议是,这些文件是在没有VBA部件的情况下保存的。你能帮帮我吗?
发布于 2016-02-09 21:00:59
所以你的文件根本不包含任何vba代码?我认为你把它复杂化了,或者我只是错过了它的本意,但我总是这样使用:
Private Sub Workbook_Open()
MsgBox "oi managers this is a draft"
End Subhttps://stackoverflow.com/questions/35292523
复制相似问题