使用VBA将模块插入新工作簿

Luc*_*ens 0 excel vba excel-vba

我在网上拖网,似乎无法找到一个简单的解决方案,所以希望你能帮忙.

我现在有一个Macro,它从.txt文件中获取数据,并每3分钟用最新数据覆盖一个excel文件.它使用覆盖的日期和时间命名新文件.

我想要的是使用"创建新工作簿"宏的工作簿在每个新工作簿创建时添加一个新模块,包括模块内部预先编写的宏(插入的模块将包含记录谁的代码当工作簿打开和关闭时,将写入第三个工作簿,但我可以这样做)

我希望所有这一切都可以通过第二个Sub完成!

谢谢!7点的

dji*_*kay 7

我将帮助您开始向工作簿添加新模块,但不可能为您编写所有内容.

我们将使用VBA可扩展性库(VBE).它包含组成对象的对象的定义VBProject.因此,在开始之前,请确保添加此引用:

Microsoft Visual Basic For Applications Extensibility 5.3

到你的工作簿.为此,请在VBA编辑器中转到" 工具"菜单,然后选择" 参考".在该对话框中,向下滚动并检查Microsoft Visual Basic For Applications Extensibility 5.3的条目.如果未设置此引用,则会收到编译器错误.

您还需要启用对VBA项目的编程访问.要做到这一点(在Excel 2010 -其他版本步骤类似),转到文件>选项>信任中心>信任中心设置...>宏设置并勾选信任对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
Run Code Online (Sandbox Code Playgroud)

这将为活动工作簿添加一个名为"MyNewModule"的新标准模块,并硬编码一个名为"ANewSub"的子程序,该子程序在运行时只显示一个消息框.

我相信并希望你能够接受并以此为基础.