word用宏+excel加解密的VB、python参考代码

建一个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

要操作的时候打开之前新建宏的宏管理面板,下拉双击加密或者解密,或者点击后再点右上方的运行即可。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章