用VBA宏自动改变Excel宏安全级别设…
来源:互联网 发布:粒子滤波算法及其应用 编辑:程序博客网 时间:2024/06/02 02:57
用VBA宏自动改变Excel宏安全级别设置
Option Explicit
Sub SetExcelVBA()
'改变Excel的安全级别
'使用Wscript,FileSystemObject,创建txt文件,注册表操作,VBS文件自我删除,改变Excel文件读写属性等
Dim WSH As Object, ret As String, regStr As String
Dim strFullname As String, strVBS As String
Dim tf, fso, RetVal
'本程序仅适用于Excel 2003(11.0),如果当前版本不是2003则退出
If Application.Version <> "11.0" ThenMsgBox "本代码仅在 Excel 2003 下可使用! ", vbExclamation, "提示": ExitSub
strFullname = ThisWorkbook.FullName '取得当前工作薄的全名
strVBS = Replace(UCase(strFullname), ".XLS", ".vbs")'temp文件VBS的文件名
Set WSH = CreateObject("Wscript.Shell") '创建Wscript对象
Err.Clear
On Error Resume Next
regStr ="HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\Level"'注册表中Excel vba安全级别位置
ret = WSH.RegRead(regStr) '读取当前安全级别
If Err.Number <> 0 Then
'判断读取是否成功
MsgBox "从注册表读取当前ExcelVBA安全级别设置失败,本程序将退出! ", vbExclamation, "提示"
Exit Sub
Else
'如果当前Excel VBA安全级别不为“低”,则设置为“低”,值1-4分别对应:低,中,高,非常高
If Val(ret) <> 1 Then ret =WSH.RegWrite(regStr, "1", "REG_DWORD")
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(strVBS, True) '创建temp文件VBS文件
With tf
'写入VBS文件内容
.WriteLine("Dim oExcel,fso,delme")
.WriteLine("Set fso = CreateObject(""Scripting.FileSystemObject"")")
.WriteLine("Set oExcel = CreateObject(""excel.application"")")
.WriteLine("oExcel.Workbooks.Open " & Chr(34)& strFullname & Chr(34))
.WriteLine("oExcel.Visible=true")
.WriteLine("Set oExcel = Nothing")
.WriteLine("delme = fso.DeleteFile(" & Chr(34)& strVBS & Chr(34)& ")")
.Close
End With
With ThisWorkbook
'将当前文件属性设置为“只读”,以方便重新打开
.ChangeFileAccess Mode:=xlReadOnly
.Saved =True
End With
RetVal = WSH.Run(Chr(34) & strVBS &Chr(34), 1, True) '运行刚刚创建的VBS文件,新启动一个Excel程序
Application.Quit '退出当前Excel
Set WSH = Nothing
Set fso = Nothing
End Sub
Option Explicit
Sub SetExcelVBA()
'改变Excel的安全级别
'使用Wscript,FileSystemObject,创建txt文件,注册表操作,VBS文件自我删除,改变Excel文件读写属性等
Dim WSH As Object, ret As String, regStr As String
Dim strFullname As String, strVBS As String
Dim tf, fso, RetVal
'本程序仅适用于Excel 2003(11.0),如果当前版本不是2003则退出
If Application.Version <> "11.0" ThenMsgBox "本代码仅在 Excel 2003 下可使用! ", vbExclamation, "提示": ExitSub
strFullname = ThisWorkbook.FullName '取得当前工作薄的全名
strVBS = Replace(UCase(strFullname), ".XLS", ".vbs")'temp文件VBS的文件名
Set WSH = CreateObject("Wscript.Shell") '创建Wscript对象
Err.Clear
On Error Resume Next
regStr ="HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\Level"'注册表中Excel vba安全级别位置
ret = WSH.RegRead(regStr) '读取当前安全级别
If Err.Number <> 0 Then
Else
'如果当前Excel VBA安全级别不为“低”,则设置为“低”,值1-4分别对应:低,中,高,非常高
If Val(ret) <> 1 Then ret =WSH.RegWrite(regStr, "1", "REG_DWORD")
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(strVBS, True) '创建temp文件VBS文件
With tf
End With
With ThisWorkbook
End With
RetVal = WSH.Run(Chr(34) & strVBS &Chr(34), 1, True) '运行刚刚创建的VBS文件,新启动一个Excel程序
Application.Quit '退出当前Excel
Set WSH = Nothing
Set fso = Nothing
End Sub
- 用VBA宏自动改变Excel宏安全级别设…
- [VBA]用VBA宏自动改变Excel宏安全级别设置
- Microsoft Office Excel 2007 Macros 宏的安全级别设置
- Excel 宏 VBA
- 【VBA】excel宏
- VBA写excel宏
- Excel用vba自动生成word
- 用VBA宏代码破解Excel密码保护
- C#调用Excel VBA宏
- VBA Excel宏常用操作
- VBA Excel宏操作示例
- excel VBA 宏 密码破解
- excel 编程VBA,宏功能
- C#调用Excel VBA宏
- Excel VBA 宏 拆分Excel表
- excel2007设置宏的安全级别
- 使用Excel宏录制了解VBA的API以及文件打开自动运行脚本
- 用Excel中的宏获取VBA中的代码。
- EXCEL自定义函数求1000以内的质数
- VBScript基础:RegExp对象
- 获取LISTVIEW列表中的数据
- C#子线程更新UI控件的方法总结
- 禁用宏则关闭excel文件
- 用VBA宏自动改变Excel宏安全级别设…
- performSelector详解
- EXCEL VBA MD5 简单加密
- 解决win7 64位系统不能识别4G内存…
- 策略模式
- Mono Touch文件下载
- EXCEL VBA 跨表合并多个文件
- EXCEL常用基础公式及操作
- WLAN DRIVE