一、利用VBA脚本直接清除
打Excel,打开脚本编辑器(Alt+F11)或者如图,右键sheet名称
输入代码并运行,即可清除密码保护:
Sub DeletePW()
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, AllowFiltering:=True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, AllowFiltering:=True
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, AllowFiltering:=True
ActiveSheet.Unprotect
End Sub
二、找回密码,并清除密码保护
跟上边相同,输入如下代码并运行,可找回密码,并且同时清除密码保护:
Sub PasswordBreaker()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim i4 As Integer, i5 As Integer, i6 As Integer
On Error Resume Next
For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
If ActiveSheet.ProtectContents = False Then
MsgBox "password is: " & Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
Exit Sub
End If
Next: Next: Next: Next: Next: Next
Next: Next: Next: Next: Next: Next
End Sub
三、用python代码批量处理多个Excel文件
注意:这种方法前提是得知道密码,如果不知道,按上述第二种方法先找回密码。
直接上代码:
'''
Title: 批量清除Excel保护密码
Author: JackieZheng
Date: 2022-04-07 20:38:46
LastEditTime: 2022-04-08 18:35:37
LastEditors: Please set LastEditors
Description:
FilePath: \\pythonCode\\RemoveExcelPwd.py
'''
import os
import win32com.client
from win32com.client import Dispatch
# 如果有打开的excel窗口先关闭,否则后边会报错
def removePassword(path,password):
try:
xlApp = win32com.client.DispatchEx('Excel.Application')
except Exception as err:
print('错误: %s' % err)
try:
for file in os.listdir(path):
filepath = os.path.join(path, file)
if not os.path.isfile(filepath):
continue
print(filepath)
xlApp.Visible = False
xlApp.DisplayAlerts = False
wb = xlApp.Workbooks.Open(filepath)
try:
# print(password)
wb.Unprotect(password)
wb.Checkcompatibility = False
sht = wb.Worksheets('Sheet1')
sht.Unprotect(password)
except Exception as err:
print('清除 %s 的保护密码出错:%s' % (file, err))
wb.Save()
wb.Close(SaveChanges=True)
finally:
if hasattr(xlApp, 'Quit'):
xlApp.Quit()
path=r'E:\数据\2021院校专业计划'
password=r'135246'
removePassword(path,password)