access vba代码大全_VBA编程在翻译中的应用

摘  要:微软Office中的VBA编程功能可以将办公操作自动化。由于现代翻译中绝大多数原文和译文都用办公软件呈现,而且现代翻译中译前和译后的编辑工作基本上都可以在office软件中完成,因此VBA编程可以将翻译实践中的许多操作自动化,从而提高翻译效率。本文首先介绍了VBA编程在翻译中应用的可能性及VBA编程的一些特点,然后通过一些实例来证明VBA编程在原文和译文等译前和译后文档编辑活动中有重要的作用,希望能够促进VBA编程在翻译中的应用研究。

关键词:VBA;编程;翻译;

一、        引言

VBA是微软公司开发的面向办公软件的一种编程语言。这种编程语言可以将许多微软办公软件中的操作自动化,从而节省用户大量的时间和精力(Mansfield,2010:xxvii,3;2008:xxvii,3)。利用VBA可以将一些简单重复性的工作编写为程序代码,从而通过运行代码自动完成办公任务,提高文字处理、数字统计和信息管理等办公效率。现代翻译大多数以办公软件特别是Word的形式呈现,因此利用VBA编程可以提高翻译效率并保证翻译质量,特别是译前和译后的原文与译文编辑、修订的效率和质量。本文以翻译中的几个实例说明VBA编程在翻译中的应用,希望今后有更多人参与到相关研究中。

二、        VBA编程在翻译应用研究

由于VBA编程在办公自动化过程中有重要的作用,对其在各个领域的应用研究也非常广泛。根据知网上面以“VBA的应用”为检索词所得到的结果,VBA编程在其他各个领域应用的研究非常普遍,但是在翻译方面的应用却搜不到任何文献。造成这种现象的主要原因是国内大多数翻译实践和翻译理论研究者出身于外语专业,而以外语这种文科专业为背景的学者多少都有一点“技术恐惧症”:对技术性的问题不敢尝试。而大多数计算机基础类的课程又很少涉及办公软件中的高级用法,造成大多数翻译实践人员对微软办公中的许多高级应用知识知之甚少。正如有学者指出的,“80%的Word用户,其实只知道它20%的功能”(徐彬,2017)。许多人甚至根本不知道微软办公软件还有编程功能。

文字处理是翻译实践中最重要的工作内容,在现代翻译中,绝大多数的原文和译文都是以办公软件特别是微软Word的形式呈现。VBA可以扩充办公软件的功能,使文字处理等办公操作自动化,因此在翻译原文和译文的编辑、修订过程中也应该有重要作用。虽然上文说在知网上搜不到VBA编程与翻译之间关系的文献,但这并不是说没有人知道VBA编程在翻译中的重要作用。例如,徐彬就多次提到了录制宏(其实就是VBA编程最基本的部分)在处理译文标点符号(2007:80)、术语收集整理(2010:47;2017:97)、隐藏奇数段落以获得原文与译文逐段对照的格式(2017:97)中的作用,以及在其他方面的应用(2014:108)。王华树也在其主编的翻译技术教材中将“宏编程基础与文本处理”作为翻译技术课程体系构建中计算机基础部分的一项内容。此外,王华树(2013)也多次在其研究中提到了Java和Python等计算机语言在翻译中的作用。因此,计算机编程应该成为计算机辅助翻译能力的一部分,而并不是可有可无的技术。

作为办公软件的一部分,VBA编程与办公软件操作密切相关,比其他独立编程语言更容易学习和掌握。翻译实践人员可以在学会VBA编程的基础上将自己反复使用的操作进行编程,从而实现操作的自动化,节省时间和精力,而将更多的时间投入到翻译过程中译文理解和语言转换等创造性的工作上。

必须指出,虽然上文提到录制宏也可以完成一些重复性的操作,但是录制宏的功能非常有限。翻译实践人员想要通过VBA编程解决翻译中的实际问题,最好还是要学会自己编写VBA代码。原因主要有以下四点。

第一,不是所有的办公软件都有宏录制功能。在微软系列办公软件中,只有Word、Excel和PowerPoint提供了录制宏的功能,而其他office软件并没有这个功能。特别是Access这个数据库软件在开发基于数据的程序方面具有非常重要的作用,但是却无法通过录制宏生成宏程序代码,自动完成各种操作。

第二,宏录制不能将两种以上软件结合起来使用。微软的各个办公软件都有自己的优势,如Word利于编辑处理文字,Excel利于处理表格和数字信息,PowerPoint利于演示,Access利于各种数据处理。一般来说,用户在办公时很少能够同时使用两个以上办公软件。即使需要使用也需要另外打开一种程序文件,如译者可以查找存储在Excel中的英汉术语表并且将相关术语插入到Word文件中,就需要同时打开Word和Excel文件,通过在两个不同类型的文档之间复制粘贴来完成任务。然而在VBA编程中,各个不同软件之间可以相互调用。这样就可以用一种办公软件同时操作两个以上的软件,从而将各个不同软件之间的功能结合起来使用。

第三,并不是所有的办公操作都能通过录制宏来完成。宏录制只是将用户的某些操作通过VBA代码记录了下来,而这些代码通常会受到录制宏时所处理的文件对象本身的限制。例如,如果一个文档只有六个段落,而用户通过录制宏将这六个段落依次复制到了另一个文件中,以后启动录制的程序代码就只能复制六个段落,如果一个文档段落超过了六个,后面的段落就无法复制。

第四,即使有些操作可以用宏录制,而且以后启动后完全可以满足用户的操作要求,也会产生冗余代码。例如,以下两个代码块的执行都可以将所选文字设置为隐藏字体,由于第一个是通过录制宏产生的代码块,而第二个是编写的代码块,结果代码长度差别很大。因为在第一个代码块中除了两个语句是有效语句以外,其他语句代码都是冗余代码。这样的代码如果不删除虽然并不会影响自动完成操作任务,但是代码过长却会拖慢程序运行速度,从而影响操作效率,而且代码过长也会影响以后对程序的维护和修改。

WithSelection.Font

    .Hidden = True  '有效语句

    .SmallCaps = False

    .AllCaps = False

    .Color = wdColorBlue  '有效语句

    .Engrave = False

    .Superscript = False

    .Subscript = False

    .Spacing = 0

    .Scaling = 100

    .Position = 0

    .Kerning = 1

    .Animation = wdAnimationNone

    .DisableCharacterSpaceGrid = False

    .EmphasisMark = wdEmphasisMarkNone

    .Ligatures = wdLigaturesNone

    .NumberSpacing = wdNumberSpacingDefault

    .NumberForm = wdNumberFormDefault

    .StylisticSet = wdStylisticSetDefault

    .ContextualAlternates = 0

End With

录制宏产生的代码

WithSelection.Font

    .Hidden = True

    .Color = wdColorBlue

End With

编写的代码

三、        VBA编程与计算机辅助翻译软件的共同设计原则

计算机辅助翻译技术“利用计算机模拟人脑记忆功能的机制,把翻译过程中简单、重复性的记忆活动交给计算机来做,将译者从机械性的工作中解放出来,全力关注翻译活动本身”(王华树,2017)。目前所有的计算机辅助软件的设计都是基于这条原则。VBA编程也是基于相似的原则,它可以让用户将办公过程中一些常见的重复性工作通过VBA代码编写为程序,然后通过运行程序而自动完成同样的操作。由于VBA和计算机辅助翻译软件有相似的设计原则,并且VBA编程主要处理的是各种办公操作,所以VBA应该成为现代翻译技术的一个组成部分,用来处理翻译过程中的各种文档操作。例如,在汉英翻译中,译文单词之间可能有一些多余的空格,通常可以用Word的查找和替换功能并结合Word通配符来将多个空格替换为一个空格。具体做法是使用查找和替换对话框中的“使用通配符”,在查找框中输入一个空格和{2,},在替换框中输入一个空格,然后点“全部替换”就可以清除全部的多余空格。在一般人看来,这个操作已经非常方便快捷。实际上这个操作因为反复使用可以编写为程序,以后就可以通过运行程序来自动完成,而不必每次都调用查找和替换对话框,并且在查找和替换框中输入查找和替换项。而且还可以将这个程序通过命令按钮加载到常用工具栏中并且为程序设置一个快捷键,以后需要时直接点击这个命令按钮或按快捷键就可以直接完成操作。

四、        VBA编程的特点

利用各种编程语言将日常生活和工作中的操作自动化已经非常普遍。为了满足各种不同编程的需要,现在也出现了各种不同的编程语言,如Perl、Python等。由于VBA与办公软件相结合,而翻译实践主要用的是各种办公软件,所以对于翻译实践中的各种操作而言,VBA有以下的特点和优势。

(一)操作便捷

   微软VBA所编写的程序可以指定为常用工具栏的命令按钮,或指定快捷组合键,或通过给文件中添加命令按钮来运行,甚至还可以指定程序自动运行,因此使用起来非常方便快捷。对于一些个人常用的程序,可以存为文件模板,并且用命令按钮的形式加载在常用工具栏中,以后使用时像点击其他命令按钮一样来完成相应的操作。图1中最右侧的三列三行命令按钮就是将一些常用操作编写为VBA小程序,并以命令按钮的形式加载到了Word工具栏中。这样就可以点击Word命令按钮一样就可以完成所需要的操作。

42b31853-091c-eb11-8da9-e4434bdf6706.png

图1 加载为工具按钮的VBA小程序 

同时,有些稍微复杂一点的小程序,由于代码较长,可以单独保存为启用宏的Word文档(后缀名为.docm),并且给文档中添加一个程序启动按钮,并且将程序的操作说明直接写到文档中。为了保证程序的安全性和不被误改,可以使用Word的限制编辑功能。这样的文档以后再次使用时,只要打开文档,点击启动按钮就可以自动运行。不仅操作方便,而且还可以像一个小软件一样与团队成员或朋友相互分享。图2就是这样一个启动了宏程序的Word文档的部分截图。

4bb31853-091c-eb11-8da9-e4434bdf6706.png

图2 添加了启动按钮和操作说明的启动宏的Word文档

(二)简单易学

与其他大多数编程语言相比,VBA编程简单易学,容易上手。首先,用户不必学习和掌握许多与编程相关的知识。因为VBA内置于微软应用软件中,所以利用VBA编写程序不需要专门的集成开发环境,也就不需要学习开发环境软件。大多数程序开发者除了要掌握一门计算机编程语言之外,还需要学习和掌握操作系统知识、数据库知识和计算机网络知识。而利用VBA编程,程序编写人员只要掌握了VBA语言并且熟悉微软办公软件的各种操作就可以编写一些简单实用的程序。其次,由于VBA语言中所涉及的各种对象、属性、方法和事件都对应于应用软件中的各种不同操作,因此编写的代码也相对容易理解和掌握,而且VBA的帮助文件提供了非常详细的查询,学习者可以通过查找帮助文件,较快掌握VBA中各种对象、属性、方法和事件的编码。再次,VBA编辑器提供了自动插入功能,自动显示各个对象所涉及的属性、方法、数据类型,以及各种常量,用户只需根据自己的编程需要进行选择,更容易学习。最后,通过上文所提到的微软办公软件提供的宏录制功能,初学者可以较快理解各种代码的含义。因此,即使不熟悉算法的初学者也可以通过录制宏查看程序代码,从而熟悉各种算法和程序编码。

(三)灵活定制

VBA虽然基于微软办公软件,但是它能够满足不同目的的编程需求。可以根据用户的需要编写简单实用的代码完成实现小的办公操作的自动化,同时也可以通过调用其他办公软件的VBA编程实现复杂任务的自动化操作。因为不同的用户用办公软件来完成不同的任务,所以不同的用户可以根据自己的需要编写不同的代码,实现不同操作的自动化。对于翻译来说,从译前原文文档的处理到译后译文的编辑都可以使用VBA编程实现翻译编辑过程某些操作的自动化。此外,VBA编程也可以用于翻译术语管理之中。

五、        VBA编程在翻译应用中实例

以翻译技术为基础的翻译流程包括译前、译中和译后三个过程。VBA编程主要出现在译前的原文文本编辑和译后的译文文本加工,其次也可以应用于翻译术语管理方面(李海亭,2019)。以下就用几个实例说明VBA编程在翻译中的具体应用。这些例子中的代码一般都比较简单,基本上都适合添加到工具栏中,随时处理文档。

(一)显示或不显示隐藏文字

校对是翻译过程中非常重要的环节。在校对过程中,有时候需要对照原文,以确定译文的意义是否与原文一致,这时候可以将原文和译文排列为段落对照的格式,也就是所有奇数段落都是原文,而所有的偶数段落都是译文。这样可以随时对照原文,检查译文意义表达是否准确。但有时在译文与原文意义一致的情况下,却只需要对译文的行文进行润色。这时候呈现原文反而会造成不便。其实,完全可以使用Word隐藏文字的功能并利用显示或不显示隐藏文字满足两种不同的需要。具体方法是将原文和译文排成段落对照的格式,并且将原文设置为隐藏文字的格式(这个过程也可以用宏程序完成,见下文)。然后可以编两个不同的宏程序,一个显示隐藏字体,一个不显示隐藏文字(两个程序的代码如下),并且将两个宏加载到常用工具栏中,设置为按钮。在需要显示原文时,点击显示隐藏字体的按钮,原文自动出现。而在不需要显示原文时,点击不显示隐藏文字的按钮,原文自动隐藏,而只显示译文。

Sub 不显示隐藏文字()

    ActiveWindow.View.ShowAll= False

    ActiveWindow.View.ShowHiddenText= False

End Sub

Sub 显示隐藏文字()

    ActiveWindow.View.ShowAll= True

    ActiveWindow.View.ShowHiddenText= True

End Sub

(二)隐藏原文奇数段落

Trados、Déjà vu和memoQ都可以忽略原文中隐藏的文字,利用这个特点,可以将原文中每一个段落都复制,变成AABBCC的形式,然后将奇数段落隐藏,这样导入CAT软件,翻译完成后,导出来的译文就成为原文和译文段落对照的格式。用表格和文本互换的操作可以完成这一任务,而且也可以将这个操作录制成宏,以便以后自动完成各种操作(徐彬,2017)。其实这种利用表格和文本相互转换的操作完成的任务也可以通过编写程序代码来自动完成,而且编写的代码要比宏录制产生的代码更加简洁,从而更容易理解和维护。图1和图2分别就是编写的代码和录制宏的代码实现自动隐藏奇数段落的部分代码。以下是这个程序的全部代码。

Sub复制原文段落并隐藏奇数段落()

    Dialogs(wdDialogFileOpen).Show  '打开文件选择窗口

    Dim Doc As Document             '定义新文档

    Set Doc = ActiveDocument        '为新文档赋值

    Dim Total As Integer            '定义整形变量作为总行数

    Total = Doc.Paragraphs.Count    '为总行数赋值

    Dim DocName1 As String          '定义整形变量作为活动文档名称

    Dim DocPath As String           '获取活动文档路径

    DocPath = Doc.Path              '为活动文档路径赋值

    Selection.WholeStory            '选择整篇文档内容

    '将文档转换成表格

Selection.ConvertToTableSeparator:=wdSeparateByParagraphs,           NumColumns:=1, _

NumRows:=Total,AutoFitBehavior:=wdAutoFitFixed

    With Selection.Tables(1)

        .ApplyStyleHeadingRows = True

        .ApplyStyleLastRow = False

        .ApplyStyleFirstColumn = True

        .ApplyStyleLastColumn = False

    End With

Doc.Tables(1).Columns(1).Select'选择表1中的第一列

Selection.Copy         '复制第一列内容

Selection.InsertColumnsRight   '在所选第一列后面插入新列

Selection.PasteAndFormat(wdPasteDefault)'粘贴所选第一列并格式化

Doc.Tables(1).Columns(1).Select'选择表1中的第一列

    With Selection.Font'对所选列字体进行设置

        .Hidden = True

        .Color = wdColorBlue

    End With

Doc.Tables(1).Select'选择表1

    '将所选表格转换为文档

Selection.Rows.ConvertToTextSeparator:=wdSeparateByParagraphs, _

NestedTables:=False

DocName = Left(Doc.Name,InStrRev(Doc.Name, ".") - 1) '截取源文档的文件名

Doc.SaveAs2 FileName:=DocPath&"\" &DocName& "段段对照"  '另存新文档为源文档的路径并重新命名

Doc.CloseSavechanges:=wdSaveChanges'关闭文档并保存修改

End Sub

(三)切分长文档

在翻译活动中,经常会遇到一些长文档,如长达数百页的一本书。这样的翻译工作通常需要好几位译者合作完成。此时就需要翻译项目管理人员将长文档切分成多个短文档,然后分配给不同的译者。即使是一位译者独立在CAT软件中翻译这样的长文档,也应该将其按照章节切分成多个不同的文档,否则在原文导入和译文导出时,由于文件整体太大而导致导入、导出和打开过程太长,从而耗费大量时间。此外,长文档在翻译过程中如果出现任何错误可能会导致整个译文无法导出,给译文译后编辑带来不便,而切分后的各个短文档即使出现问题,也只影响局部而不会影响全部。在长文档的切分中,可以利用Word大纲视图中创建子文档功能完成(徐彬,2017)。当然也可以使用VBA编写一个小程序来自动完成。以下代码就是通过录制宏产生的按照一级标题切分长文档的程序代码。可以按照不同的章节要求先设定好一级标题,然后直接运行该程序或点击添加到菜单栏中对应的按钮就可以直接将一篇长文档切分为好多个短文档。

Sub 切分文档()

    ActiveWindow.ActivePane.View.Type= wdOutlineView

    Selection.WholeStory

    If ActiveWindow.View =wdMasterView Then

        ActiveWindow.View =wdOutlineView

    Else

        ActiveWindow.View =wdMasterView

    End If

 ActiveDocument.Subdocuments.AddFromRangeRange:=Selection.Range

ActiveWindow.Close

End Sub

(四)去掉多余空格

在汉译英中,译文中一般要求在两个单词中间有一个空格,而在单词与标点符号之间不要空格。但一般会因为输入失误而在两个单词之间产生两个以上的空格或者在单词与后面的标点符号之间加上空格。通常在译文校对过程中应该去掉这些多余的空格。如果用人工校对和修改,不仅费时费力,还会因为各种原因而未能全部修改。这种简单的劳动其实也可以通过VBA编码来交给计算机自动完成。以下就是通过录制并编辑宏代码产生的去除英文多余空格的程序代码。

Sub 去除多余空格()

    Selection.Find.ClearFormatting

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

        .Text = "{1,}([\,\.\?\!^13\(\)'""])"

        .Replacement.Text = "\1"

        .Forward = True

        .Wrap = wdFindContinue

        .MatchWildcards = True

    End With

    Selection.Find.ExecuteReplace:=wdReplaceAll

    With Selection.Find

        .Text = " {2,}"

        .Replacement.Text = " "

        .Forward = True

        .Wrap = wdFindContinue

        .MatchWildcards = True

    End With

Selection.Find.ExecuteReplace:=wdReplaceAll

End Sub

(五)去掉所有书签

在翻译实践中,经常会遇到利用OCR技术将PDF文件(特别是PDF图像)转换成Word格式,然后再导入CAT软件翻译的情形。例如,用FineReade将PDF文件转换为Word,然而有时PDF文档转换成Word后会出现大量的书签。这种书签一般用Word查找替换对话框中的定位功能一个一个删除,这样做费时费力,其实可以用以下四行代码编写的小程序一次全部删除,当然最好将这样的宏程序附加到常用菜单栏中,每次使用时只要点击一次就可以瞬间完成删除。

Sub 删除所有书签()

Dim MyBkAs Bookmark

For EachMyBkInActiveDocument.Bookmarks

MyBk.Delete

Next

End Sub

以上几个小程序都是使用WordVBA编写的,这些Word VBA程序也是翻译中对原文和译文进行编辑最常使用的程序。

六、        结语

本文论述了VBA编程在翻译实践中的应用,并以几个实例说明了VBA编程在原文和译文编辑及术语管理中的作用。实际上VBA编程在翻译中的应用远不止这些。作为办公软件的一个扩展功能,VBA有极强的灵活性和适应性。将微软办公软件中的Word、Excel、PowerPoint及Access等各种功能通过VBA编程相互结合起来,会在翻译中有无限的应用前景。希望今后有更多学者在这一方面有所研究。

参考文献

李海亭. Office VBA编程设计两款翻译术语工具[J].电子技术与软件工程, 2019(07):230-232.

王华树. 翻译技术教程[M]. 上海:商务印书馆, 2017.

王华树. 翻译专业硕士(MTI)翻译技术教学研究:问题与对策[J]. 外语电化教学, 2018(06):76-82.

王华树. 语言服务行业技术视域下的MTI技术课程体系构建[J]. 中国翻译, 2013, 34(06):23-28.

徐彬. 计算机辅助翻译教学——设计与实施[J]. 上海翻译, 2010(04):45-49.

徐彬. 翻译技术教学新思考[J]. 北京航空航天大学学报(社会科学版), 2014, 27(06):107-111.

徐彬, 郭红梅, 国晓立. 21世纪的计算机辅助翻译工具[J]. 山东外语教学, 2007(04):79-86.

徐彬, 郭红梅. 翻译技术教学新谈[J]. 当代外语研究, 2017(05):96-101.

徐彬, 谭莹. 计算机辅助下的翻译协作[J]. 山东外语教学, 2008(04):91-94.

俞敬松, 王华树. 计算机辅助翻译硕士专业教学探讨[J]. 中国翻译, 2016(03):38-42.

RICHARD M.Mastering VBA for Microsoft Office 2007[M], Indianapolis: Wiley Publishing,Inc. 2008:xxvii, 3.

RICHARD M. Mastering VBAfor Microsoft Office 2010[M], Indianapolis: Wiley Publishing, Inc.2010:xxvii, 3.


  • 0
    点赞
  • 0
    评论
  • 3
    收藏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值