0

我在网上进行了拖网,似乎无法找到一个简单的解决方案,所以希望你能提供帮助。

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

我想要的是具有“创建新工作簿”宏的工作簿还可以在创建每个新工作簿时添加一个新模块,包括模块内的预写宏(插入的模块将包含记录谁的代码当工作簿被打开和关闭时,将写入第三个工作簿,但我可以做到这一点)

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

4

1 回答 1

9

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

我们将使用 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”的小子程序,该子程序在运行时仅显示一个消息框。

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

于 2014-07-18T00:37:25.300 回答