建一個string_substitution.xlsx,在sensitive_words字符串變量輸入待加密詞彙,空格間隔(圖中爲"a b c d e")
PS:數字8可以修改爲其他數字,即由隨機字符+數字組成的密文長度
import xlwings as xw
import string
import random
import pandas as pd
wb = xw.Book('./string_substitution.xlsx')
sht = wb.sheets['sheet1']
sensitive_words = '''
a b c d e
'''
sensitive_list = sensitive_words.split()
sensitive = []
for word in sensitive_list:
ciphertext = ''.join(random.sample(
string.ascii_letters+string.digits, 8))
sensitive.append([word, ciphertext])
sht.range('a1').value = sensitive
得到密碼本excel,第一列原文,第二列密文
在word2016-視圖菜單-宏-查看宏,在宏名處新建兩個宏,即加密和解密。
參考代碼如下:
PS 密碼本excel已經要用絕對路徑!!!
加密VB代碼參考:
Sub 加密()
'
' 加密 宏
'
'
Dim i, p
Dim MyXls As Object
Set MyXls = CreateObject("密碼本Excel絕對路徑")
p = 51
For i = 1 To p
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = MyXls.Sheets(1).Range("a" & i)
.Replacement.Text = MyXls.Sheets(1).Range("b" & i)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
MyXls.Close
Set MyXls = Nothing
End Sub
解密VB代碼參考:
Sub 解密()
Dim i, p
Dim MyXls As Object
Set MyXls = CreateObject("密碼本Excel絕對路徑")
p = 51
For i = 1 To p
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = MyXls.Sheets(1).Range("b" & i)
.Replacement.Text = MyXls.Sheets(1).Range("a" & i)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
MyXls.Close
Set MyXls = Nothing
End Sub
要操作的時候打開之前新建宏的宏管理面板,下拉雙擊加密或者解密,或者點擊後再點右上方的運行即可。