精华内容
下载资源
问答
  • EXCEl VBA实例代码大全

    2020-03-14 18:28:22
    很好很全的VBA代码,每个独立的Excel文件里都有代码,对初学者是一个非常好的参考 代码包含了VBA的各种应用,有助于参考学习
  • 守柔(SHOUROU)WORD 编程代码集 书中可能涉及的对象,主要有:节(Sections)的循环,段落中(Paragraphs)的循环, 句子(Sentences)的循环,词组中(Words)的循环,字(Characters)的循环,表格(Tables) 的循环,单元格...
  • VBA编程大全

    2019-05-05 19:18:11
    VBA编程大全
  • Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.
  • WORD编程代码集 pdf版

    2018-05-05 08:10:31
    WORD编程代码集是一份WORD 编程代码集(Word VBA Sample Code),做word的相关的编程可以参考使用,掌握相关的使用代码,希望让有一定WORD基础的朋友能够通过此书的来学习。
  • 摘 要:微软Office中的VBA编程功能可以将办公操作自动化。由于现代翻译中绝大多数原文和译文都用办公软件呈现,而且现代翻译中译前和译后的编辑工作基本上都可以在office软件中完成,因此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.


    展开全文
  • VBA代码大全

    2013-10-02 11:20:04
    VBA代码大全,VBA,36个实例,学习好帮手
  • ppt_VBA编程初步

    2018-07-11 18:44:07
    PPT VBA教程。VBA是Visual Basic for Application的意思,可以侠义的理解为PPT(或者EXCEL、WORD)里面的VB程序,在这些工具里面都可以使用ALT+F11打开VBE(VB编辑器),在VBE里面就可以输入、修改、调试VBA程序
  • 《EXCEL VBA 常用代码实战大全》示例文件
  • VBA实战代码大全-下载

    万次阅读 多人点赞 2019-06-01 14:30:48
    VBA实战代码大全’、‘Excel函数宝典’、‘VBA图表基础教程’、‘excel按钮图表编号’下载

    VBA常用代码大全

    实战代码大全:
    下载资源链接:https://pan.baidu.com/s/1WgCsOAJ_9jgcpVokJXkhhg
    提取码:3nk4
    其他(图表,excel函数大全,自定义功能区图标id):
    链接: https://pan.baidu.com/s/1nkY0ZV7BHPYRA_FPAUn9dg
    提取码: qm89


    网络收集整理,仅供个人学习使用

    展开全文
  • VBA代码编程方法详解实例.rar
  • 西门子WinCC_VBS_VBA脚本编程手册
  • Excel 与 VBA编程中的常用代码 用过 VB 的人都应该知道如何声明变量在 VBA中声明变量和 VB 中是完全一样的 使用 Dim 语句 Dim a as integer ' 声明 A 为整形变量 Dim a ' 声明 A 为变体变量 Dim a as string ' 声明 ...
  • 这本书还是很赞的,书里面有150个范例,200多个技巧,还是以实用为主,知识点针对性强,适合Excel初学者和有一定ExcelVBA编程基础的同学
  • 《Excel VBA常用代码实战大全》重点强调实践性,旨在帮助Excel初学者和有一定ExcelVBA编程基础、希望进一步提高的读者掌握VBA编程设计的技巧。全书精选150个典型范例,近245个技巧,以实用为主,知识点针对性强,并...
  • vba代码大全,大量的应用实例,WORD形式,粘贴在VBA上就可以测试了。vba代码大全,大量的应用实例,WORD形式,粘贴在VBA上就可以测试了。vba代码大全,,粘贴在VBA上就可以测试了。
  • 259个vba代码大全

    2018-12-06 08:34:18
    259个宏代码大全,快速办公,解决问题,是学习宏的必备工具
  • 很喜爱 VBA,喜欢使用她对 Excel 操作实现所需的功能,更喜欢使用 VBA 控制 Excel 以及 实现结果后的那种感觉。 一直都想对 ExcelVBA 进行系统的整理和归纳,但由于对 Excel 及 VBA 了解得不够深入, 总觉得无从下手...
  • ppt应用之vba常用代码

    2012-05-27 12:36:46
    VisualBasic For Application(VBA),可以认为VBA是非常流行的应用程序开发语言VISUAL BASIC的子集。 利用该代码,可以实现ppt的一些自动处理功能。
  • VBA 代码全集 云南农业大学 1 VBA 代码全集 云南农业大学 2 VBA 代码全集 目 录 一引用 4 二 Worksheet_Change事件 4 三相乘 6 四相减 7 五高级筛选 7 六双击事件 9 七单位汇总 sumif单条件汇总 . 11 八多条件汇总 ...
  • VBA常用代码合集

    千次阅读 多人点赞 2020-12-19 11:13:11
    VBA常用代码模版Tp0️⃣—零零散散小功能(持续更新)Tp1️⃣—输出活动页面筛选后的行数Tp2️⃣—创建数组存放数据Tp2-1 静态数组Tp2-2 动态数组Tp3️⃣ 创建字典存放数据Tp4️⃣ 优化代码运行速度 Tp0️⃣—零零散...

    Tp0️⃣—零零散散小功能(持续更新)

    • 剪切列
    • 替换字符
    • 取消复制剪切状态
    • 浮点数向上取值
    • 区域添加边框
    • 区域设置颜色
    • 调整列宽、行高
    • 待更新
    '  小功能集合
    Sub Demos()
    
    	'	剪切一列到指定列
    	With ThisWorkbook.Sheets(2)    
    		.[AI:AI].Cut    
    		.[AE:AE].Select    
    		Selection.Insert Shift:=xlToRight
    	End With
    
    	'	替换字符,将(空白)替换为空
    	With worksheet.[C:C]
    		.Replace "(空白)", ""
    	End With
    	
    	'	取消复制剪贴状态
    	Application.CutCopyMode = False
    	   
    	'	将带有小数的数据向上取整
    	NewData = Application.WorksheetFunction.RoundUp(Datas, 0)
    
    	' 	单元格区域添加边框
    	.Range("A4:N" & .Range("A9999").End(xlUp).Row).Borders.LineStyle = xlContinuous
    
    	'  -------------单元格标色-------------
    	'  指定区域标色
    	With Range("C2:G9")
        	.Interior.ColorIndex = 0	' 无填充颜色
         	.Interior.ColorIndex = 3	' 红色
         	.Interior.ColorIndex = 5	' 蓝色              
        End With
        
    	' 实现自动调整行高、列宽
    	Rows("1:5").EntireRow.AutoFit			' 调整1至5行行高
        Columns("A:AA").EntireColumn.AutoFit    ' 调整A至AA列列宽
        ' 设置行高、列宽为固定值
        Rows("1:5").RowHeight = 15				' 设置1至5行行高为15
        Columns("A:AA").ColumnWidth = 15		' 设置A至AA列列宽为15
    
    End Sub
    

    颜色索引-Range属性
    Excel颜色索引

    Tp1️⃣—输出活动页面筛选后的行数

    ' 获取活动页面筛选后的行数
    Sub RowCntAfterFilter()
    
        Dim rngCell As Range
        Dim lngRowCnt As Long
        For Each rngCell In [a1].CurrentRegion.SpecialCells(xlCellTypeVisible).Areas
            lngRowCnt = lngRowCnt + rngCell.Rows.Count
        Next rngCell
    	rows_count =  lngRowCnt - 1   '可视区行数
        MsgBox "筛选后数据行数为:" & rows_count 
        Set rngCell = Nothing
        
    End Sub
    

    Tp2️⃣—创建数组存放数据

    通过数组可以快速对数据进行处理
    前提:表格数据须规范,不考虑合并单元格
    一维数组:数字(1,2,3,4),字符串(a,b,c,d)
    二维数组:((1,1),(1,2),(1,3),(2,1),(2,2),(2,3)) 表格结构、行列转置、计算、遍历、统计…
    多维数组:不是很熟悉,不敢乱说( ̄□ ̄||)
    简单介绍静态数组动态数组的使用

    Tp2-1 静态数组

    Sub SetArray()
    	’   静态数组可直接通过 变量名=数组()的方式设置
    	array_number = Array(1,2,3,4,5)
    	array_string = Array("张三","李四","王五","Sugar","Smile")
    	
    	'  可遍历,参数:count,Index 取值:data = array_data(1)
    	'  赋值
    	.[A1:A5] = array_number 
    	.[B1:B5] = array_string
    
    	'存放单元格区域数据到数组(二维数组的快捷应用)
    	Dim arr As Variant       '定义一个Variant类型的变量,名称为arr
       	arr = Range("A1:C3").Value '将A1:C3中保存的数据存储到数组arr里
       	Range("E1:G3").Value = arr '将数组ar写入E1:G3单元格区域
    
    End Sub
    

    Tp2-2 动态数组

    Sub VimArray()
    
    	'自定义动态数组长度n,上界为0
    	Dim n As Integer
    	n = 0
    
    	Dim SupArr() As String	 ' 定义动态数组存放供应商名称
    	With ActiveSheet   
        	For i = 2 To .[A1048576].End(xlUp).Row
            	ReDim Preserve SupArr(n)		 '  给动态数组重定义一个实际的大小
            	n = n + 1
            	SupArr(n - 1) = .Cells(i, 3).Value  ' 存到动态数组里去
        	Next i
    	End With
    
    End Sub
    

    Tp3️⃣ 创建字典存放数据

    通过字典可以快速对数据进行处理
    存放键值对关系,key具有唯一性,
    参数:count,keys,values,Item
    需要创建字典对象后使用

    '与Excel单元格结合,创建字典存放数据
    Sub RngDict()
    
    	Dim DicManForm As Object
    	Set DicManForm = CreateObject("Scripting.Dictionary")
    	key_MaxRow = ActiveSheet.[A66666].End(xlUp).Row	'活动工作表A列的最后一行的行数
    	
        '对A列进行遍历
        For key_Row = 2 To key_MaxRow
        	'取A列不重复的值作为字典的key,索引值唯一
        	KeyXX = ActiveSheet.Cells(key_Row, 1).Value
         	'导入条件:不为空,不重复
         	If KeyXX <> "" And DicManForm.Exists(KeyXX) = False Then
                DicManForm.Add KeyXX, key_Row
          	End If
        Next
        '通过key值,重设对应的value,key不存在时会报错
        DicManForm(key) = value
    	Set DicManForm = Nothing
    
    End Sub
    

    Tp4️⃣ 优化代码运行速度

    为了加快代码的执行速度,最简单的方式,将代码的执行过程设置为不显示,可以在代码执行时,临时关闭后续设置:自动重算自动刷新弹窗警告
    温馨提示:以下代码需要成对出现,设置False后,末尾改回True

    Sub AppSetting()
    
    	’  程序开始
        With Application
            .ScreenUpdating = False		'  关闭屏幕刷新
            .EnableEvents = False		'  关闭事件触发
            .DisplayAlerts = False		'  关闭弹窗提示
        End With
        
        ' Your Code				'   调用程序运行的主体代码
    
    	’程序末尾
        With Application
            .ScreenUpdating = True		'  恢复屏幕刷新
            .EnableEvents = True		'  恢复事件触发
            .DisplayAlerts = True		'  恢复弹窗提示
        End With
        
    End Sub
    

    好久不见、更新继续

    Tp5️⃣ 轻松实现工作簿加密

    Sub 解除全部工作表保护()
        Dim n As Integer
        For n = 1 To Sheets.Count
            Sheets(n).Unprotect
        Next n
    End Sub
    
    Sub 为指定工作表加指定密码保护表()
        Sheet10.Protect Password:="123"
    End Sub
    
    Sub 在有密码的工作表执行代码()
        Sheets("1").Unprotect Password:=123 '假定表名为“1”,密码为“123”  打开工作表
        Range("C:C").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True   '隐藏C列空值行
        Sheets("1").Protect Password:=123    '重新用密码保护工作表
    End Sub
    

    Tp6️⃣ 通过对话框选择文件-1

    ' 设置选择文件的弹出窗口,自主选择文件
    Sub FilePicker()
        
        Open_Path = ThisWorkbook.Sheets("操作界面").[B4]
        
        '新建一个对话框对象
        Set FileDialogObject = Application.FileDialog(msoFileDialogFilePicker)
        
        '配置对话框
        With FileDialogObject
            
            .Title = "请选择目标文件所在的文件夹:"
            
            '添加判断,改变对话框默认打开的路径
            '默认打开上次的文件路径
            If Open_Path = "" Then
            .InitialFileName = "C:\"
            Else
            .InitialFileName = Open_Path
            End If
            
        End With
        
        '显示对话框
        FileDialogObject.Show
        '获取选择对话框选择的文件
        Set paths = FileDialogObject.SelectedItems
        
        With Sheets("操作界面")
            .[I:I].Clear
            file_ = paths.Item(1)       '包含绝对路径的文件名
            .[B4].Value = paths.Parent.InitialFileName      '当前文件所在目录
            .[B6].Value = Right(file_, Len(file_) - Len(paths.Parent.InitialFileName))  '获取文件
            
            '选择多个文件时,遍历所选文件,并写入I列
            If paths.Count > 1 Then
                i_Row = 2
                For Each Item In paths
                    .Range("I" & i_Row) = Item
                    i_Row = i_Row + 1
                Next
            End If
            
        End With
        
    End Sub
    
    

    Tp7️⃣ 通过对话框选择文件-2

    '通过对话框选择文件路径
    Sub FolderPicker()
        
        Open_Path = ThisWorkbook.Sheets("操作界面").[B4]
        
        '新建一个对话框对象
        Set FolderDialogObject = Application.FileDialog(msoFileDialogFolderPicker)
        
        '配置对话框
        '配置对话框
        With FolderDialogObject
            
            .Title = "请选择目标文件所在的文件夹:"
            
            '添加判断,改变对话框默认打开的路径
            '默认打开上次的文件路径
            If Open_Path = "" Then
            .InitialFileName = "C:\"
            Else
            .InitialFileName = Open_Path
            End If
            
        End With
        
        FolderDialogObject.Show '显示对话框
        
        Set paths = FolderDialogObject.SelectedItems            '获取选择对话框选择的文件夹
        Set fso = CreateObject("Scripting.filesystemobject")    '取目标文件
        Set myf = fso.getfolder(paths.Item(1))                  '从指定路径下获取文件
        
        With Sheets("操作界面")
            .[I:I].Clear
            .[B4].Value = paths.Item(1)
            
            i_Row = 2
            For Each file In myf.Files
    '            .Range("I" & i_Row) = file             '记录绝对路径+文件名
                .Range("I" & i_Row) = file.Name         '记录文件名
                i_Row = i_Row + 1
            Next
            
        End With
        
    End Sub
    
    
      未完待续、、、
      期待下次相遇
    
    展开全文
  • 提供了50个Excel常用功能的VBA代码集,工作中可以直接引用,亦可为VBA初学者提供参考。
  • WPS表格 VBA帮助文件

    2019-01-20 13:53:16
    金山出的WPS表格(Excel)VBA的帮助文件,看起来比微软Excel VBA的帮助文件相对简单,示例更为详细易懂
  • AutoCAD_VBA开发经典实例集 总共有7个例子,
  • WPS表格宏代码开发利用ExcelVBA开发案例做为有益参考.
  • Office编程百宝箱29.0,简称VBA百宝箱。为Office编程国产首款超大型插件,原创30多个功能宝贝。所有功能通用于Excel、Word、PowerPoint、Outlook、Access、Publisher、Project、Office全家福。适用于微软Office2003...
  • 链接:https://pan.baidu.com/s/1vPQaUrZ2UbY7BS4wiHGnXw 提取码:68ee
    展开全文
  • 如果你已经拥有使用Excel的丰富经验,可以借助《中文版Excel 2010高级VBA编程宝典》成为一位 Excel专家。Excel 2010高级 VBA编程宝典不仅介绍使用 Excel的新方法和开发新电子表格应用程序的步骤,还展示如何开发 VBA...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,084
精华内容 3,233
关键字:

vba编程代码大全