[Excel VBA]批量对Excel文件进行加密

发布日期:2024-10-14 08:56    点击次数:70

这是本公众号开通以来的第62篇文字。感谢大家的支持!

前段时间工作特别忙,随后休了一段时间的假,公众号更新就暂停了一下。今天开始,公众号恢复更新。

好了,言归正传。

随着XX对数据安全的重视程度提高,目前对于一些较为敏感的数据进行邮件传输时,要求进行必要的加密。如果是个别文件的加密,手工操作量还不大。当一次需要进行加密的文件较多时,手工逐个操作起来就十分不便。

前段时间,我们就遇到了这么一个工作场景。

当时,需要对一系列的敏感数据按照客户归属关系发送到对应的网点,每个网点一张表,每张表都需要加密,总体表格数量多达上百份。为降低手工操作量,当时写了一段简单的代码,并包装成了小工具。

以11个Excel文件为例,以abc123d作为密码进行加密。动图演示效果如下:

图片

完成加密操作后,小工具会弹出一个对话框,告诉你:对XX个文件进行了加密,密码是:XXXX。点击确定后,我们的文件就加密好了。

下面我们试着打开被加密的文件,看是否成功。动图演示如下:

图片

可以看到,我们的文件确实被加密了。输入上面设定好的密码abc123d后,文件被打开了。

上面用到的这个小工具,我上挂到百度云盘里面,大家可通过下面的路径进行下载。

链接:https://pan.baidu.com/s/1Lkn2cUXBTRVlSDXv-p7w9g 密码:ee3y

接下来,我们看一下用到的VBA代码。

在上面这个小工具中,我们用到了Excel VBA中的模块和窗体,如下图所示。

图片

模块部分没有太多内容,主要就是一句代码:

批量加密工作簿.Show

代码的意思是对窗体“批量加密工作簿”进行调用。

窗体部分相对比较复杂。我们首先要做出下面这样一个窗体界面来:

图片

用到的代码主要是以下这些:

PrivateSub UserForm_Initialize()

OnError Resume Next

Application.DisplayAlerts= False

Dimfopen As FileDialog

Dimmypath As String

DimtheSh As Object

DimtheFolder As Object

SettheSh = CreateObject('shell.application')

SettheFolder = theSh.browseforfolder(0, '', 0, '')

IftheFolder Is Nothing Then

ExitSub

EndIf

mypath= theFolder.items.Item.Path

Me.Label2= mypath

Setmyfso = CreateObject('scripting.filesystemobject')

Setmyfile = myfso.getfolder(mypath).Files

i= 0

ForEach fe In myfile

    With Me.ListBox1

        .AddItem

        .List(i, 0) = fe.Name

    End With

    i = i + 1

Next

Application.DisplayAlerts= True

EndSub

PrivateSub 取消_Click()

    End

EndSub

PrivateSub 全不选_Click()

Fori = 0 To Me.ListBox1.ListCount - 1

    Me.ListBox1.Selected(i) = False

Next

EndSub

PrivateSub 全选_Click()

Fori = 0 To Me.ListBox1.ListCount - 1

    Me.ListBox1.Selected(i) = True

Next

EndSub

PrivateSub 确定_Click()

Application.ScreenUpdating= False

Fori = 0 To Me.ListBox1.ListCount - 1

    If Me.ListBox1.Selected(i) = True Then

        myfilename = Me.Label2 &'\' & Me.ListBox1.List(i, 0)

        Workbooks.Open Filename:=myfilename

        ActiveWorkbook.Password = Me.TextBox1

        ActiveWorkbook.Save

        ActiveWorkbook.Close savechanges:=True

    End If

Next

MsgBox('已完成对所有表格加密,密码为: ' &Me.TextBox1)

Application.ScreenUpdating= True

End

EndSub

上述代码依次对应的是:窗体初始化、取消按钮、全不选按钮、全选按钮和确定按钮。

有兴趣的朋友欢迎私下联系交流;不愿意看代码的朋友,直接按着这个小工具用就好了。

好了。今天的内容就到这里吧。欢迎大家关注我的公众号。请多多评论,多多推广。谢谢!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。

上一篇:从多个工作簿中提取最近N天的数据
下一篇:没有了