基于VBA电子文档标定密级软件的设计与实现

2022-09-27 12:42刘庆杰蒋奉君魏光瑜
工程与试验 2022年3期
关键词:密级文本框子程序

刘庆杰,蒋奉君,刘 辉,魏光瑜

(1.成都飞机工业(集团)有限责任公司,四川 成都 610092;2.西南交通大学,四川 成都 611756;3.国家知识产权局专利局专利审查协作四川中心,四川 成都 610200)

1 引 言

VBA(Visual Basic for Application)是Visual Basic的一种宏语言,具有比较完整的程序设计语言,并提供了面向对象的程序设计方法[1],可跨越多个应用软件,且具有控制应用软件的能力,可直接应用于Office系列软件。

根据国家保密规定,凡是国家秘密载体,包括已经定稿或未定稿的文件和电子文档,都应当按要求标明密级和保密期限。公司要求所有电子文档均应在首页固定位置按照特定字号与字体标定密级,包括“秘密★10年”、“内部”、“公开”等。电子文档创建人为标定密级的第一责任人,标定密级的常规操作为:打开文档、插入文本框、输入密级文字、调整字号、调整字体、调整文本框位置、关闭文档。创建的文档数量较多时,标定密级的操作重复且繁琐。

为了减少人工的重复性操作,基于VBA设计了电子文档标定密级软件,将标定密级功能入口集成于电脑鼠标的右键菜单栏中,可不打开电子文档进行相关调整工作,仅需选择需标定密级的电子文档和选择需确定的密级,可以方便地为一项或多项电子文档同时进行密级标定,自动在电子文档首页的指定位置插入文本框、输入指定字号、字体的密级文字字样。

2 软件架构

标定密级软件按照模块化设计[2],包括程序入口调用、选择电子文档、选择密级标识以及公开、内部等6个标识密级子程序,软件框架见图1。

图1 标定密级软件框架

程序入口子程序为DOS命令,主要是修改注册及调用VBA宏程序;选择电子文档子程序实现文件选择并获取文件路径;选择密级标识子程序实现调用相应密级子程序,密级标识子程序实现后台标定密级。

3 界面设计

基于VBA自带窗体模块,设计密级选择窗口[3],设置“公开”、“内部”、“秘密”、“机密”、“普通商秘”、“核心商秘”等共6个密级标识选项,用不同颜色进行区分。另设置“继续”按扭,实现对不同的文件进行标定密级。设置“退出”按扭,退出程序。密级选择界面如图2所示。

图2 密级选择窗口

源代码如下:

Private Sub CommandButton1_Click()

Call Pulic_L.Pulic_L

End Sub

Private Sub CommandButton2_Click()

Call Internal_L.Internal_L

End Sub

Private Sub CommandButton3_Click()

Call Secret_L.Secret_L

End Sub

Private Sub CommandButton4_Click()

Call Classified_L.Classified_L

End Sub

Private Sub CommandButton5_Click()

Call GenCS_L.GenCS_L

End Sub

Private Sub CommandButton6_Click()

Call PivCS_L.PivCS_L

End Sub

Private Sub CommandButton7_Click()

Unload SelLe

Call FileSelect.FileSelect

End Sub

Private Sub CommandButton8_Click()

Application.DisplayAlerts = False

ThisWorkbook.Saved = False

On Error Resume Next

Kill "F:个人资料文档标定密级 mep.txt"

ThisWorkbook.Close

End Sub

4 VBA编程

4.1 鼠标右键菜单程序入口

基于DOS命令编写两个BAT文件,均放置于C:Program Files目录下。第1个修改注册表,实现在鼠标右键菜单栏增加“标密管理”选项并链接调用BMS.bat,修改后的注册表见图3,鼠标右键菜单栏选项见图4,源代码为Reg add HKEY_CLASSES_ROOTdirectoryackgroundshell标密管理command /ve /d “C:Program FilesBMS.bat”。第2个为BMS.bat,调用主程序BMS.xlsm,代码为@start EXCEL.EXE/e“C:ProgramFilesBMS.xlsm”。

图3 修改后的注册表

图4 鼠标右键菜单选项

4.2 文件选择子程序

文件选择子程序主要实现在鼠标选中文件后记录该文件的路径及所选择的文件数量[4]。弹出的文件选择窗口默认为D盘,允许多项选择,可任意选择文件位置(如图5所示)。源代码如下:

Public ROUTE

Public Conunt_NUM

Sub FileSelect()

Set filedialogobject = Application.FileDialog(msoFileDialogFileSelect)

With filedialogobject

.Title = "请选择需标密的文件"

.InitialFileName = "D:"

.AllowMultiSelect = True

End With

filedialogobject.Show

Set PATHS = filedialogobject.SelectedItems

With filedialogobject

Conunt_NUM = .SelectedItems.Count

End With

If Conunt_NUM > 0 Then

ReDim ROUTE(0 To Conunt_NUM - 1)

For I = 0 To Conunt_NUM - 1

ROUTE(I) = PATHS(I + 1)

Next

Else

MsgBox "未选取任何文件!"

End If

SelLe.Show 1

End Sub

图5 文件选择窗口

4.3 公开密级子程序

公开密级子程序主要实现按选择的文件路径逐个打开文件,插入文本框[5-9],位置为60#,30#,文本框大小为232#,40#。在文本框中设置文字为“公开”,字体为黑体,字号为16磅。完成所有选择文件密级标识后,提示“已将所选文件标密为‘公开’”。

Sub ublic_L()

If Conunt_NUM = 0 Then

MsgBox “您未选取文件!”

Exit Sub

Else

Dim FILENUM As Integer

FILENUM = Ubound(ROUTE, 1)

For j = 0 To FILENUM

If ROUTE(j) Like “*.doc*” Then

Dim oWord

Set oWord = VBA.CreateObject(“word.application”)

oWord.Visible = 0

oWord.DisplayAlerts = True

Dim oDoc As Object

Set oDoc = oWord.Documents.Open(ROUTE(j), , False)

With oDoc

Dim TXTBOX1

Set TXTBOX1 = oDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, 60#, 30#, 232#, 40#)

With TXTBOX1

.TextFrame.TextRange.Text = “公开”

.TextFrame.TextRange.Font.Name = “黑体”

.TextFrame.TextRange.Font.Size = “16”

.Line.Visible = msoFalse

.Fill.Visible = msoFalse

End With

End With

On Error Resume Next

oWord.ActiveDocument.Save

oWord.ActiveDocument.Close False

oWord.Application.Quit

Set oWord = Nothing

Set oDoc = Nothing

Else

End If

Next

MsgBox “已将所选文件标密为“公开””

End If

On Error Resume Next

Kill “F:个人资料文档标定密级 mep.txt”

End Sub

4.4 其它密级子程序

其它密级子程序整体与公开密级子程序相同,不同之处在于文本框中输入密级标识的文字及完成标定密级后的提示框文字,源代码如下:

With TXTBOX1

.TextFrame.TextRange.Text = "**"

.TextFrame.TextRange.Font.Name = "黑体"

.TextFrame.TextRange.Font.Size = "16"

.Line.Visible = msoFalse

.Fill.Visible = msoFalse

End With

MsgBox "已将所选文件标密为“**”"

“**”位置为相应的密级标识。

5 测试验证

5.1 测试项目

新建100份电子文档,存放于同一文件夹中,见图6。序号1~50的文档标为分开、序号51~80标为内部、序号81~100标为秘密。测试分为人工和程序两组进行,人工标定密级为2人,其中1人采用插入文本框、输入文字、调整字体及字号的方式,另外1人采用复制粘贴已经制作好的密级标识文本框的方式;程序标定密级为1人,测试项目包括计算标定密级的时间,统计标定密级的一致性,包括字体、字号、文本框位置,并定性说明疲劳程度。

图6 测试用的电子文档

5.2 测试过程

人工标定密级测试过程:双击打开电子文档、插入文本框、输入相应密级标识文字、调整字号16磅、调整字体为黑体、保存文档、关闭文档,不断重复上述操作100次。

程序标定密级测试过程见图7,分3次批量选择序号1~50、51~80、81~100,以及选择“公开”、“内部”、“秘密”3种密级。

图7 程序标定密级过程

5.3 测试结果

通过人工和程序为100份电子文档标定不同密级的对比测试,所得结果如表1所示。

表1 测试结果

在测试过程中,人工操作明显繁琐,且随着标定密级数量的增加,操作明显因疲劳而节奏放缓,人员A、 B密级标识字体、字号正确,但人员A插入文本框位置不定,且标定密级过程期间不能处理其它工作。程序测试的人员有条不紊,仅需点几次鼠标即可,且在程序自动标定密级时,还能处理其他工作,密级标识字体、字号、位置完全一致,见图8。

图8 标识公开密级结果

6 结 论

为快速实现对单个或批量电子文档标定密级,减少人工的重复性操作,基于VBA设计了电子文档标定密级软件。该软件采用模块化设计,主程序根据选择的密级调用相应子程序。程序入口集成于鼠标右键菜单栏中,方便快速调用主程序。

经测试验证,程序标密速度为20s/份,远高于人工标密的30~45s/份。程序不依赖操作系统且无需安装,可直接运行,推广应用性强,可与其他标密系统结合使用。后续将考虑结合公司国家秘密事项目录对文档进行扫描,主动识别关键密点,辅助确定密级。

猜你喜欢
密级文本框子程序
巧用文本框实现PPT多图片排版
PPT文本框的另类应用
基于区块链技术的多密级数据安全存储系统设计
浅谈子程序在数控车编程中的应用
文本框酷变3D效果
子程序在数控车加工槽中的应用探索
高校密级档案管理问题探析
西门子840D系统JOG模式下PLC调用并执行NC程序
文件密级标识全程管控系统的设计与实现
密级“совершенно секретно”是“绝密”还是“机密”?