一、以下代码是通过Auto_Open事件,自动向ThisWorkbook里添加VBA代码:

Private Sub Auto_Open()
  Call AddCodeToThisWorkbook
  MsgBox ("This is Auto_Open Sub !")
End Sub
Private Sub AddCodeToThisWorkbook() 
    With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
        .InsertLines 1, "Private Sub Workbook_open()"
        .InsertLines 2, "   MsgBox (""This is Workbook_Open Sub !"")"
        .InsertLines 3, "End Sub"
    End With
End Sub

二、以下代码是通过VBA修改注册表:

Sub ChangeSettings()
    Dim Fso
    Dim RegKey_User_AcsVm As String
    Dim RegKey_User_Level As String
    Dim RegKey_Mach_AcsVm As String
    Dim RegKey_Mach_Level As String
    Dim RegVal_User_AcsVm As Variant
    Dim RegVal_User_Level As Variant
    Dim RegVal_Mach_AcsVm As Variant
    Dim RegVal_Mach_Level As Variant
    Dim ExcelVersion As String
                      
    On Error Resume Next
                      
    ExcelVersion = Application.Version
    Set Fso = CreateObject("Scripting.FileSystemObject")
                      
    RegKey_User_AcsVm = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security\AccessVBOM"
    RegKey_User_Level = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security\Level"
    RegKey_Mach_AcsVm = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security\AccessVBOM"
    RegKey_Mach_Level = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & ExcelVersion & "\Excel\Security\Level"
                      
    Value_User_AcsVm = 1
    Value_User_Level = 1
    Value_Mach_AcsVm = 1
    Value_Mach_Level = 1
    Call ModReg(RegKey_User_AcsVm, Value_User_AcsVm, "REG_DWORD")
    Call ModReg(RegKey_User_Level, Value_User_Level, "REG_DWORD")
    Call ModReg(RegKey_Mach_AcsVm, Value_Mach_AcsVm, "REG_DWORD")
    Call ModReg(RegKey_Mach_Level, Value_Mach_Level, "REG_DWORD")
End Sub
Sub ModReg(RegKey As String, Value As Variant, ValueType As String)
    Dim oWshell
    Set oWshell = CreateObject("WScript.Shell")
    If ValueType = "" Then
        oWshell.RegWrite RegKey, Value
    Else
        oWshell.RegWrite RegKey, Value, ValueType
    End If
    Set oWshell = Nothing
End Sub

、以下函数用来判断一个工作簿中是否存在指定的Sheet名:

Function SheetIsExist(WBookName As String,WSheetName As String) As Boolean   
    Dim Tmp_WSheet As Worksheet   
    For Each Tmp_WSheet In Workbooks(WBookName).Worksheets   
        If UCase(Tmp_WSheet.Name) = UCase(WSheetName) Then
            SheetIsExist = True
            Exit Function
        End If                    
    Next Tmp_WSheet   
    SheetIsExist = False      
End Function

下为调用SheetIsExist函数的示例:

Sub Example01()
    '开始计时
    begin = Timer
    '禁止刷屏
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '记录当前文件名
    Dim CurFileName As String
    CurFileName = Sheets("Sheet1").[A1].Parent.Parent.Name
    If SheetIsExist(CurFileName, "Sheet2") Then
        Worksheets("Sheet2").Delete
    End If
    If SheetIsExist(CurFileName, "Sheet3") Then
        Worksheets("Sheet3").Delete
    End If
      
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    over = Timer
    MsgBox ("已运行完成!共运行" & over - begin & "s")
End Sub