查看原文
其他

自动检查信用证,WORD能行

邓熠 贸易金融 2022-04-05

作者:邓熠 (广州)


要说办公电脑必不可少的软件,我们首先想到的肯定就是OFFICE系列,其中EXCEL、WORD和PPT等更是与我们的日常工作密不可分,随着它们的教学视频在网络中遍地开花,现在每个办公室肯定也“标配”各种公式、排版等操作达人。

实际上,OFFICE软件功能远比可视的要丰富,利用他们自带的VBA编程功能,可以扩展出更丰富、更深层次、让办公更加自动化的用法。我下面给大家介绍,利用该VBA编写的、较好地实现了让WORD自动检查信用证的功能的程序“WORD来查”。

首先,先简单介绍一下涉及的部分代码的功能,更多的功能解释及运用,请查看微软网站 Find.Execute 方法 (Word) | Microsoft Docs,需要强调的是,代码里面所有标点均为英文标点,切记不要弄成中文标点,否则代码无法运行

例,信用证45a场出现价格条款Cif,而46a场没有规定需要提交保险单据:

With Selection.Find1)告诉WORD,接下来要执行查找并且选定

 .MatchWildcards = True(2)“使用通配符” ,即支持模糊查找

 .Text = "(45a:)(*)(Cif)(*)(46a:)"3)在(关键字)45a”到(关键字) “46a”之间查找(关键字) “Cif“,“*”就是通配符,意思就是无论Cif前后是什么文字,只要在信用证45a: Descriptions Of Goods场次中发现Cif,一律视为符合条件。

.Execute(4)执行代码

If .Found = True Then(5)如果找到关键字,即45a中发现Cif

 With Selection.Find(6)继续查找

.MatchWildcards = True(7)仍然是通配查找

.Text = "(46a:)(*)(Insurance)(*)(47a:)"(8)46a: Documents Required 中查找“Insurance”

.Execute(9)执行代码

    If .Found = False Then(10)如果没有找到“Insurance”关键字

    response = MsgBox("价格条款为 CIF,但是46A没有发现 INSURANCE 关键字")

(11)弹窗提示“价格条款为 CIF,但是46A没有发现 INSURANCE 关键字”

End If  语句(10执行完毕

End With 语句(6)执行完毕

End If语句(4执行完毕

End With语句(1执行完毕

现在将上述代码在WORD里面的可视化运作过程分拆出来,让各位更直观点感受其检查的过程:

下面就是代码(1)—(5)的执行过程,在45a: Descriptions Of Goods查找到关键字Cif


下面就是代码(6)—(11)的执行过程,在46a: Documents Required中没有查找到关键字 Insurance,于是弹窗提醒



上述就是WORD检查信用证的大概模式,通过关键字组合搭配,完全可以替代人工进行序号检查、FOB与FREIGHT PREPAID的运费矛盾、提交了AIR WAYBILL而保险却是OCEAN MARINE的运输方式与投保矛盾等等检查并弹窗提醒。该程序在投入运行至今一年多的时间里,收集整理约1200种关键字组合,对一张常规内容的信用证内容进行检查及弹窗确认,整个程序的运行过程仅约30秒!对比同等检查条件情况下的人工核对,无论效率还是质量都得到了大幅提高。

细心的读者应该已经发现,绿色高亮部分的Guanzghou拼写错了,正确的应该是Guangzhou(广州),的确,凭借强大的内置字典,WORD提供了非常重要的拼写错误提醒功能,是WORD能自动检查信用证的核心模块。可是,WORD的原始拼写错误提醒方式只是在错误的字符下加上红色波浪线,这在文字量较大的信用证检查中,极易被肉眼忽略导致差错。现在只需执行如下代码,即可将所有可能的拼写错误提醒加粗放大高亮提醒,因为篇幅原因,该代码涉及较多VBA知识,就不一一讲述,仅就实现的过程进行讲解:

Dim rng As Range
Dim docSourse As Document
Set docSource = ActiveDocument
For Each rng In docSource.SpellingErrors (1)查找文本内所有的拼写错误

rng.HighlightColorIndex = wdBrightGreen(2)将拼写错误显示为绿色高亮背景,选择绿色是因为根据研究,人眼对于绿色的反应比起其它颜色更为敏感,绿底黑字的组合最能简单刺激眼部感官,通俗地说就是可以在大量文字中,一眼就看到!

rng.Font.Bold = True(3)将拼写错误加粗

rng.Font.Size = 20(4)将拼写错误字体改为20号

Next

End Sub

下图是未执行代码前的效果


下图是执行代码后的效果,绿色的部分一目了然,为人工识别提供了重要的辅助



可是,实务中还存在一些本身是正确的、拼写极为相似,导致被误用在信用证中的单词,比如提单 Bill Of Lading中的Lading误写为Loading、Signed为Singed、Ltd误写为Lid等等,我们可以看到对于这些误用词,WORD不会报错,但是在实务中,这些误用词虽然只是一字之差,往往造成意思谬之千里,然而仅靠人工去查找识别这些误用,费时费力,效果也不好,通过下面的代码,结合日常工作收集到的这样的误用的单词,就能轻松解决这个问题了,这里涉及到的变量及数组就不展开,仅就实现逻辑进行讲解:

Dim yigeTrue As Variant(1)将yigeTrue定义为变量,变量相当于数学的X

yigeTrue = Array("Singed", "Bill Of Loading", "Lid")(2)yigeTrue可以赋予的值

For i = 0 To UBound(yigeTrue)(3)VBA起算为0到yigeTrue里面最后的一个序号,在本代码中i就是i=0对应"Singed",依次i=1对应 "Bill Of Loading", i=2对应"Lid"

With ActiveDocument.Content.Find(4)执行查找(区别于Selection.Find,这个语句仅查找而不选定,特别适合进行大范围循环数组)

.Text = yigeTrue(i)(5)就是查找(3)赋值后的关键字

.Forward = True
.Execute
If .Found = True Then

response = MsgBox("发现关键字 " + yigeTrue(i))(6)关键字命中后弹窗提醒

End If
End With
Next

理论上的确还能利用如PYTHON等比VBA更先进的语言编写类似的信用证检查工具,但是这些软件往往要求特定的生产环境、甚至还有版权要求,难以大范围推广。相比来看,利用WORD自带的VBA语言结合WORD核心拼写检查功能编写出来的“WORD来查”,得益于OFFICE软件的普遍适用性,是成本非常低的、同时适用性非常广的、准人工智能的、自动化信用证检查解决方案之一。囿于篇幅,我无法将打印出来有约50页A4纸、接近2000行的、涵盖约1200种关键字的代码一一进行讲解。后续可以通过公众号提供一个体验版“WORD来查”给各位有兴趣的信用证从业人员,同时也很欢迎各位与我交流,共同优化完善程序,最终解决信用证拼写这一长期困扰我们单证从业人员的问题。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存