使用VBA将模块插入新工作簿
我有一个networking拖网,似乎无法find这个简单的解决scheme,所以希望你能帮助。
我现在有一个macros,它从一个.txt文件获取数据,并每三分钟用一个最新数据覆盖一个excel文件。 它使用覆盖的date和时间来命名新文件。
我想为“创build新的工作簿”macros的工作簿添加一个新的模块到创build的每个新的工作簿,包括一个预先编写的模块内的macros(插入的模块将包括代码来logging谁当这个工作簿被打开和closures的时候,这样会写入第三个工作簿,但是我可以做那个)
我希望所有这一切都可以用第二个子!
谢谢! 7点的
我会让你开始添加一个新的模块到工作簿,但不可能为你写所有的东西。
我们将使用VBA可扩展性库(VBE)。 它包含组成VBProject
的对象的定义。 所以,在开始之前,请确保添加这个参考:
Microsoft Visual Basic为应用程序扩展性5.3
到您的工作簿。 要做到这一点,在VBA编辑器中去工具菜单,然后select引用 。 在该对话框中,向下滚动并检查 Microsoft Visual Basic For Applications Extensibility 5.3的条目。 如果您不设置此引用,您将收到一个编译器错误。
您还需要启用对VBA项目的编程访问。 要做到这一点(在Excel 2010 – 其他版本的步骤类似),转到文件>选项>信任中心>信任中心设置…>macros设置,并勾选信任访问VBA项目对象模型 。
现在你已经准备好了代码:
Public Sub AddNewModule() Dim proj As VBIDE.VBProject Dim comp As VBIDE.VBComponent Set proj = ActiveWorkbook.VBProject Set comp = proj.VBComponents.Add(vbext_ct_StdModule) comp.Name = "MyNewModule" Set codeMod = comp.CodeModule With codeMod lineNum = .CountOfLines + 1 .InsertLines lineNum, "Public Sub ANewSub()" lineNum = lineNum + 1 .InsertLines lineNum, " MsgBox " & """" & "I added a module!" & """" lineNum = lineNum + 1 .InsertLines lineNum, "End Sub" End With End Sub
这将为活动工作簿添加一个名为“MyNewModule”的新标准模块,并将一个名为“ANewSub”的子代码硬编码,在运行时只显示一个消息框。
我相信并希望你能接受并build立在这个基础上。