如何使用VBA添加带有VBA代码的新电子表格

Han*_*nah 4 excel vba excel-vba

我正在创建一个宏,部分宏功能是让VBA创建一个新的电子表格.由于分发的性质,名称将改变.我需要在此电子表格中添加代码.无论如何我能做到吗?

Sid*_*out 8

Jook已经解释了它是如何工作的.我会更进一步.

添加工作表的语法是

expression.Add(Before, After, Count, Type)
Run Code Online (Sandbox Code Playgroud)

如果您检查内置Excel的帮助下,你可以看到Before,After,Count,Type代表

来自EXCEL的帮助

参数(所有4个参数均为可选)

  1. Before - 一个对象,指定添加新工作表之前的工作表.
  2. After - 一个对象,指定在其后添加新工作表的工作表.
  3. Count - 要添加的页数.默认值为1.
  4. Type - 指定图纸类型.可以是下列XlSheetType常量之一:xlWorksheet,xlChart,xlExcel4MacroSheet,或xlExcel4IntlMacroSheet.如果要基于现有模板插入工作表,请指定模板的路径.默认值为xlWorksheet.

创建工作表后,您需要使用.insertlines创建相关过程并嵌入要运行的代码.

注意 - IMP:如果希望代码在VBA项目中嵌入代码,则需要确保选择" 信任访问VBA项目对象模型 ".查看快照.

在此输入图像描述

下面是我创建工作表然后嵌入Worksheet_SelectionChange代码的示例,该代码将显示消息"Hello World"

代码 - 经过试验和测试

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim nLines As Long
    Dim VBP As Object, VBC As Object, CM As Object
    Dim strProcName As String

    Set ws = Worksheets.Add

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

    strProcName = "Worksheet_SelectionChange"

    With ThisWorkbook.VBProject.VBComponents( _
    ThisWorkbook.Worksheets(ws.Name).CodeName).CodeModule
        .InsertLines Line:=.CreateEventProc("SelectionChange", "Worksheet") + 1, _
        String:=vbCrLf & _
        "    Msgbox ""Hello World!"""
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

这是运行上述代码后新工作表代码区域的外观.

在此输入图像描述