【问题标题】:Is it possible to automatically input VBA code when a new sheet is generated?生成新工作表时是否可以自动输入 VBA 代码?
【发布时间】:2013-12-08 06:04:27
【问题描述】:

是否可以创建一个新的 Excel 工作表,然后自动将 VB 代码放入该工作表?

这是我到目前为止所做的。一个名为模板的工作表包含用户需要输入的所有信息的输入。我进行了各种检查,以确保在执行其他任何操作之前填写并正确填写所有字段。当他们单击某个单元格以执行脚本时,它将打开一个 Word 文档并在其中导入所有必需的信息。然后在 Excel 中创建一个新工作表。根据在模板表中的组合框 (cboSites) 中选择的内容,为新表指定一个名称。我还进行了检查,以确保没有同名的工作表。我已经完成了所有这些工作,没有任何问题。

从这里我想做但想不出怎么做的是,当创建新工作表时,我希望 VBA 代码自动转储到这个新工作表中。我知道我想使用的代码,但我不知道如何获取它,所以它会自动将该代码与该表一起放置。

是否可以这样做,或者只能创建和格式化一个新工作表,而不能将任何代码导入其中?

【问题讨论】:

  • 我确实发现我可以创建另一个模板,代码已经在里面了。然后,与其创建新工作表,不如让它复制模板并重命名复制的模板。我还可以使模板不可见。我想这会奏效。我仍然想知道是否可以使用脚本将代码放入新工作表中,这将是我的首选方法。如果有人有想法,请告诉我。谢谢!

标签: excel vba


【解决方案1】:

这是一个将插入的示例代码

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "Hello World"
End Sub

在新工作簿的新工作表中。

Sub Sample()
    Dim wb As Workbook, ws As Worksheet
    Dim VBP As Object, VBC As Object, CM As Object
    Dim strProcName As String

    Set wb = Workbooks.Add
    Set ws = wb.Sheets(1)

    Set VBP = wb.VBProject
    Set VBC = VBP.VBComponents(ws.Name)
    Set CM = VBC.CodeModule

    strProcName = "Worksheet_SelectionChange"

    With wb.VBProject.VBComponents( _
    wb.Worksheets(ws.Name).CodeName).CodeModule
        .InsertLines Line:=.CreateEventProc("SelectionChange", "Worksheet") + 1, _
        String:=vbCrLf & _
        "    Msgbox ""Hello World"""
    End With
End Sub

请根据您的需要修改它。

您需要确保选择了Trust access to Visual Basic Project。要选择它,请按照THIS LINK中提到的步骤进行操作

【讨论】:

  • 这太棒了,谢谢!为了让它在同一个工作簿中工作而不创建新工作簿,我删除了 Set VBC 和 Set CM 这两行。我还更改了 Set wb = ThisWorkBook。我没有设置 ws = wb.Sheets(1),而是将生成的工作表字符串放在 1 的位置。在您的 Dim 语句之后,我刚刚执行了添加工作表命令并指定了它应该去的位置。这太棒了!谢谢!
  • 很高兴能帮上忙 :)
【解决方案2】:

我不知道将代码放入 Excel 文件的简单方法。 有人可能会考虑直接更改 XML 结构(xlsx 文件基本上是 xml 和代码文件的压缩目录)。 但是您是否考虑过使用 XLAM(Excel 插件)文件,该文件可以包含代码并为所有需要使用它的用户导入。当用户启动它时,它会用 Excel 打开。根据您的设置,这对您有帮助吗?

【讨论】:

    【解决方案3】:

    查看您正在生成的工作簿的VBProject 属性。您应该能够操作它,添加包含所需代码的新 VBComponents 项。

    http://msdn.microsoft.com/en-us/library/office/ff194737.aspx

    这需要进行适当的安全设置。

    这是另一个网站上与此主题相关的主题:

    http://www.mrexcel.com/forum/excel-questions/663848-access-vbulletin-project-not-trusted.html

    我自己没有试过,所以不能提供更多细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      相关资源
      最近更新 更多