使用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立在这个基础上。