Luc*_*ens 0 excel vba excel-vba
我在网上拖网,似乎无法找到一个简单的解决方案,所以希望你能帮忙.
我现在有一个Macro,它从.txt文件中获取数据,并每3分钟用最新数据覆盖一个excel文件.它使用覆盖的日期和时间命名新文件.
我想要的是使用"创建新工作簿"宏的工作簿在每个新工作簿创建时添加一个新模块,包括模块内部预先编写的宏(插入的模块将包含记录谁的代码当工作簿打开和关闭时,将写入第三个工作簿,但我可以这样做)
我希望所有这一切都可以通过第二个Sub完成!
谢谢!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"的子程序,该子程序在运行时只显示一个消息框.
我相信并希望你能够接受并以此为基础.
归档时间: |
|
查看次数: |
10020 次 |
最近记录: |