VBA学习笔记(一):自动添加代码VBA修改注册表
生活随笔
收集整理的這篇文章主要介紹了
VBA学习笔记(一):自动添加代码VBA修改注册表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、以下代碼是通過Auto_Open事件,自動向ThisWorkbook里添加VBA代碼:
Private Sub Auto_Open()Call AddCodeToThisWorkbookMsgBox ("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 FsoDim RegKey_User_AcsVm As StringDim RegKey_User_Level As StringDim RegKey_Mach_AcsVm As StringDim RegKey_Mach_Level As StringDim RegVal_User_AcsVm As VariantDim RegVal_User_Level As VariantDim RegVal_Mach_AcsVm As VariantDim RegVal_Mach_Level As VariantDim ExcelVersion As StringOn Error Resume NextExcelVersion = Application.VersionSet 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 = 1Value_User_Level = 1Value_Mach_AcsVm = 1Value_Mach_Level = 1Call 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 oWshellSet oWshell = CreateObject("WScript.Shell")If ValueType = "" ThenoWshell.RegWrite RegKey, ValueElseoWshell.RegWrite RegKey, Value, ValueTypeEnd IfSet 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) ThenSheetIsExist = TrueExit FunctionEnd If Next Tmp_WSheet SheetIsExist = False End Function
以下為調用SheetIsExist函數的示例:
Sub Example01()'開始計時begin = Timer'禁止刷屏Application.ScreenUpdating = FalseApplication.DisplayAlerts = False'記錄當前文件名Dim CurFileName As StringCurFileName = Sheets("Sheet1").[A1].Parent.Parent.NameIf SheetIsExist(CurFileName, "Sheet2") ThenWorksheets("Sheet2").DeleteEnd IfIf SheetIsExist(CurFileName, "Sheet3") ThenWorksheets("Sheet3").DeleteEnd IfApplication.ScreenUpdating = TrueApplication.DisplayAlerts = Trueover = TimerMsgBox ("已運行完成!共運行" & over - begin & "s") End Sub
轉載于:https://blog.51cto.com/mitree/1329270
總結
以上是生活随笔為你收集整理的VBA学习笔记(一):自动添加代码VBA修改注册表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 备注 2013 11 19
- 下一篇: dojo自定义表格组件