我在网上进行了拖网,似乎无法找到一个简单的解决方案,所以希望你能提供帮助。
我现在有一个宏,它从 .txt 文件中获取数据,并每 3 分钟用最新数据覆盖一个 excel 文件。它使用覆盖的日期和时间命名新文件。
我想要的是具有“创建新工作簿”宏的工作簿还可以在创建每个新工作簿时添加一个新模块,包括模块内的预写宏(插入的模块将包含记录谁的代码当工作簿被打开和关闭时,将写入第三个工作簿,但我可以做到这一点)
我希望所有这些都可以通过第二个 Sub 来完成!
我将帮助您开始向工作簿添加新模块,但不可能为您编写所有内容。
我们将使用 VBA 可扩展性库 (VBE)。它包含构成VBProject
. 因此,在开始之前,请确保添加此引用:
Microsoft Visual Basic 应用程序扩展性 5.3
到您的工作簿。为此,在 VBA 编辑器中转到Tools菜单并选择References。在该对话框中,向下滚动并检查Microsoft Visual Basic For Applications Extensibility 5.3条目。如果不设置此引用,您将收到编译器错误。
您还需要启用对 VBA 项目的编程访问。为此(在 Excel 2010 中 - 其他版本的步骤类似),请转到 File > Options > Trust Center > Trust Center Settings... > Macro Settings 并勾选Trust access to the VBA project object model。
现在您已准备好使用代码:
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”的小子程序,该子程序在运行时仅显示一个消息框。
我相信并希望你能接受并以此为基础。