Word VBA学习交流资料之二Word格式.docx

上传人:b****7 文档编号:22662662 上传时间:2023-02-05 格式:DOCX 页数:28 大小:63.25KB
下载 相关 举报
Word VBA学习交流资料之二Word格式.docx_第1页
第1页 / 共28页
Word VBA学习交流资料之二Word格式.docx_第2页
第2页 / 共28页
Word VBA学习交流资料之二Word格式.docx_第3页
第3页 / 共28页
Word VBA学习交流资料之二Word格式.docx_第4页
第4页 / 共28页
Word VBA学习交流资料之二Word格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

Word VBA学习交流资料之二Word格式.docx

《Word VBA学习交流资料之二Word格式.docx》由会员分享,可在线阅读,更多相关《Word VBA学习交流资料之二Word格式.docx(28页珍藏版)》请在冰豆网上搜索。

Word VBA学习交流资料之二Word格式.docx

查看VisualBasic代码来确定对应于段落左缩进的属性(LeftIndent属性)。

将插入点置于LeftIndent之中,并按F1或单击“帮助”按钮。

在帮助主题中,可以查看示例以及支持LeftIndent属性的对象(单击“应用于”)。

(从上面可以看出,录制宏是我们认识未知对象的很好方法之一,同时,也知道我为什么要大家装“金山词霸”的原因!

如果你这个单词不认识,你怎么知道他是“左缩进”?

当然,也有方法:

就是把这个值设为一个比较特殊的值,再打特殊值所对应的属性)

说明

录制的宏使用Selection属性返回Selection对象。

例如,下列指令将所选段落缩进0.5英寸。

SubIndentParagraph()

Selection.ParagraphFormat.LeftIndent=InchesToPoints(0.5)

EndSub

您也可以修改录制的宏并与Range对象一起使用。

(我们在日常的使用中经常注意到:

在使用“本机上的模板”是的向导就大量使用了Selection对象,而不是Range对象!

难道说微软有更新层次的考虑?

我想可能是Selection对象更稳定,跨版本能力更强吧!

二、修改录制的VisualBasic宏

宏录制器是查找所需的VisualBasic方法和属性的非常方便的工具。

如果不知道使用何种属性或方法,可打开宏录制器,手动执行操作。

宏录制器会将操作译为VisualBasic代码。

但录制宏具有一些限制条件。

您不能录制下列内容:

条件分支

变量指定

循环结构

自定义用户窗体

出错处理

用鼠标选定的文字(必须使用组合键)

若要增强宏的功能,可能需要修改录制到模块中的代码。

删除Selection属性

使用宏录制器创建的宏取决于所选内容。

在大多数录制的宏指令的开头,可以看到“Selection”。

例如,下列示例将所选内容移动至Temp书签,并在书签之后插入文字。

SubMacro1()

Selection.GotoWhat:

=wdGotoBookmark,Name:

="

Temp"

Selection.MoveRightUnit:

=wdCharacter,Count:

=1

'

相当于选中后按一个键盘的右方向键

Selection.TypeTextText:

Newtext"

这个宏虽然可以完成任务,但是有一些缺点。

首先,如果文档中没有一个名为Temp的书签,该宏将导致出错。

其次,该宏可能不正确地移动所选内容。

修改这个宏,使其不再使用Selection对象,就可解决上述两个问题。

以下就是经修改后的宏:

SubMyMacro()

IfActiveDocument.Bookmarks.Exists("

)=TrueThen

endloc=ActiveDocument.Bookmarks("

).End

ActiveDocument.Range(Start:

=endloc,_

End:

=endloc).InsertAfter"

'

_ 就是续行的意思

EndIf

Exists方法用于检查是否存在名为Temp的书签。

如果找到该书签,则用End属性返回该书签结束字符的位置。

最后使用Range方法返回一个引用书签结束位置的Range对象,以使用InsertAfter方法插入文字。

有关定义Range对象的详细信息,请参阅处理Range对象。

使用With…EndWith

可使用With…EndWith结构简化引用相同对象的宏指令。

例如,在文档顶部添加标题时,将录制下面的宏。

Selection.HomeKeyUnit:

=wdStory

Title"

Selection.ParagraphAlignment.Alignment=wdAlignParagraphCenter

每个指令都使用Selection属性返回一个Selection对象。

可以简化这个宏,这样只需使用一次Selection属性。

WithSelection

.HomeKeyUnit:

.TypeTextText:

.ParagraphAlignment.Alignment=wdAlignParagraphCenter

上面那句是原帮助中的,但肯定是笔误!

微软没看出?

!

.ParagraphFormat.Alignment=wdAlignParagraphCenter

EndWith

不使用Selection对象也可以完成相同的任务。

下面的宏在活动文档的开头使用Range对象来完成相同的任务。

WithActiveDocument.Range(Start:

=0,End:

=0)

.InsertAfter"

'

删除不必要的属性

如果录制了一个关于在对话框中选择选项的宏,即使只更改一个或两个选项,宏录制器也会记录该对话框中的所有选项的设置。

如果不希望更改所有的选项,可从录制的宏中删除不必要的属性。

下面录制的宏包含“段落”对话框的一些选项(单击“格式”菜单可显示该对话框的所有信息)。

WithSelection.ParagraphFormat

.LeftIndent=InchesToPoints(0)'

左缩进0英寸

.RightIndent=InchesToPoints(0)'

右缩进0英寸

.SpaceBefore=6'

段前距6磅

.SpaceAfter=6'

段后距6磅,下面不写了!

.LineSpacingRule=0

.Alignment=wdAlignParagraphLeft

.WidowControl=True

.KeepWithNext=False

.KeepTogether=False

.PageBreakBefore=False

.NoLineNumber=False

.Hyphenation=True

.FirstLineIndent=InchesToPoints(0)

.OutlineLevel=10

但是,如果只需更改段前和段后间距,可将宏更改为:

.SpaceBefore=6

.SpaceAfter=6

因为只设置了较少的属性,所以简化后的宏运行得更快。

运行结果只更改选定段落的段前和段后的间距,所有其他设置都没有改变。

(注意:

如果你是一个喜欢乱动的人,还是要上面吧,但他的速度肯定没有下面的快,但他的适合环境更大.更所谓"

忠"

"

孝"

难两全啊^-^)

删除不必要的参数

当宏录制器记录一个方法时,会包含所有参数的值。

打开名为Test.doc的文档时,录制了下面的宏。

所得到的宏包含Open方法的所有参数。

Documents.OpenFileName:

C:

\MyDocuments\Test.doc"

_

ConfirmConversions:

=False,ReadOnly:

=False,_

AddToRecentFiles:

=False,PasswordDocument:

PasswordTemplate:

Revert:

WritePasswordDocument:

WritePasswordTemplate:

Format:

=wdOpenFormatAuto

可以从录制的宏中删除不需要的参数。

例如,可以删除所有设置为空字符串的参数(如WritePasswordDocument:

),如下所示。

=False,_

ReadOnly:

=False,AddToRecentFiles:

Revert:

=False,Format:

三、自动运行的宏

通过为一个宏赋予某个特殊的名称,就可在执行某项操作(例如启动Word或打开文档)时自动运行宏。

Word将下列名称识别为自动宏,或称“auto”宏。

宏名

运行条件

AutoExec

启动Word或加载全局模板时

AutoNew

每次新建文档时

AutoOpen

每次打开已有文档时

AutoClose

每次关闭文档时

AutoExit

退出Word或卸载全局模板时

当以下条件之一为真时,将识别代码模块中的自动宏。

∙模块在自动宏(如AutoExec)之后命名,并且包含一个名为“Main”的过程。

∙任何模块中的过程在自动宏之后命名。

与其他宏一样,自动宏也可以保存于Normal模板、其他模板或文档中。

要让自动宏运行,它必须位于活动文档的Normal模板中,或活动文档选用的模板中。

唯一例外的是AutoExec宏,它只有存储于以下位置时才可自动运行:

Normal模板、通过“模板和加载项”对话框全局加载的模板、或由“Startup”文件夹指定的文件夹中的全局模板。

在命名冲突的情况下(多个自动宏名相同),Word将运行上下文中最近的自动宏。

例如,如果同时在文档及其附加的模板中创建了AutoClose宏,则仅执行文档中的自动宏。

如果在Normal模板中创建了AutoNew宏,只有当文档或其附加模板中没有名为AutoNew的宏时,该自动宏才能运行。

(笔者注:

简称"

就近原则"

注释 

 

按住Shift可以终止自动宏的运行。

例如,基于包含AutoNew宏的模板新建文档时,按住Shift可终止AutoNew宏的运行。

方法是:

按住Shift,单击(“文件”菜单)“新建”对话框中的“确定”按钮,并在显示新文档前持续按住Shift。

如果运行一个宏时有可能触发自动宏,(这种情况,我没遇过!

)可用下列指令终止自动宏的运行:

WordBasic.DisableAutoMacros

四、修改Word命令

大多数Word命令都可通过转换为宏的方式对其进行修改。

例如,可修改“文件”菜单上的“打开”命令,使其不再显示Word文档文件列表(扩展名为.doc的文件),而显示当前文件夹中的所有文件。

若要在“宏”对话框中显示内置Word命令列表,可在“宏的位置”框中选定“Word命令”。

显示的命令列表中包含所有的菜单命令、工具栏命令或快捷键命令。

菜单命令名称以相关的菜单名称开头。

例如,“文件”菜单中的“保存”命令显示为“FileSave”。

方法是工具/宏/宏

通过将一个宏命名为与Word命令相同的名称,就可用宏替代Word命令。

例如,如果创建一个名为“FileSave”的宏,当选择“文件”菜单上的“保存”命令、单击“保存”工具栏按钮,或按“保存文件”快捷键时,Word将运行该宏。

本示例介绍了修改FileSave命令的步骤。

1.在“工具”菜单上,指向“宏”,然后单击“宏”。

2.在“宏的位置”框中,选择“Word命令”。

3.在“宏名”框中,选择“FileSave”。

4.在“宏的位置”框中选择一个模板或文档以保存该宏。

例如,选择Normal.dot(全局模板)可生成一个共用宏(即修改所有文档的“FileSave”命令)。

5.单击“创建”按钮。

FileSave宏显示如下:

SubFileSave()

FileSaveMacro

Savestheactivedocumentortemplate

ActiveDocument.Save

可添加指令或删除现有的ActiveDocument.Save指令。

之后在运行“FileSave”命令时,新的FileSave宏将取代word命令。

若要恢复“FileSave”原有的功能,需重新命名新的FileSave宏或将之删除。

说明:

也可以创建与Word命令同名的代码模块(例如FileSave)并包含名为Main的子程序,以此替换Word命令。

五、将文本插入文档

使用InsertAfter或InsertBefore方法在Selection或Range对象之前或之后插入文字。

下列示例在活动文档的末尾插入文字。

SubInsertTextAtEndOfDocument()

ActiveDocument.Content.InsertAfterText:

Theend."

下列示例在所选内容之前插入文字。

SubAddTextBeforeSelection()

Selection.InsertBeforeText:

newtext"

Range对象或Selection对象在使用了InsertBefore或InsertAfter方法之后,会扩展并包含新的文本。

使用Collapse方法可以将Selection或Range折叠到开始或结束位置。

六、选定文档中的文本

可使用Select方法选定文档中的对象。

Select方法可用于多种对象,例如Bookmark、Field、Range和Table对象。

下列示例选定活动文档中的第一个表格。

SubSelectTable()

ActiveDocument.Tables

(1).Select

下列示例选定活动文档中的第一个域。

SubSelectField()

ActiveDocument.Fields

(1).Select

下列示例选定活动文档中的前四个段落。

Range方法用于创建一个引用前四个段落的Range对象,然后将Select方法应用于Range对象。

SubSelectRange()

DimrngParagraphsAsRange

SetrngParagraphs=ActiveDocument.Range(_

Start:

=ActiveDocument.Paragraphs

(1).Range.Start,_

=ActiveDocument.Paragraphs(4).Range.End)

rngParagraphs.Select

选定文档中的文本:

我觉得用处不大,原因就是为什么要选中呢?

能操作就直接操作,不能的话,就选中吧(他可以说是没办法的办法).

七、编辑文字

本主题包含与下列任务相关的VisualBasic示例:

∙确定文本是否被选定

∙折叠选定内容或区域

∙扩展选定内容或区域

∙重新定义Range对象

∙更改文本

有关其他编辑任务的信息和示例,请参阅下列主题:

从文档返回文本

选定文档中的文本

将文本插入文档

修改文档的某一部分

确定文本是否被选定

Selection对象的Type属性返回所选内容类型的信息。

如果所选内容为插入点,则下列示例显示一条消息"

NothingisSelected"

没选中任何问题

SubIsTextSelected()

IfSelection.Type=wdSelectionIPThenMsgBox"

Nothingisselected"

折叠所选内容或区域

使用Collapse方法可将Selection或Range对象折叠到开始或结束点的位置。

下列示例在所选内容的开头将所选内容折叠为一个插入点。

SubCollapseToBeginning()

Selection.CollapseDirection:

=wdCollapseStart

=wdCollapseEnd

这个是标准的折叠的程序,以后可能会用到的噢!

下列示例将区域折叠至其结束点(在第一个单词之后),并添加新文本。

SubCollapseToEnd()

DimrngWordsAsRange

SetrngWords=ActiveDocument.Words

(1)'

设置第一个单词为区域rngWords

WithrngWords

.CollapseDirection:

=wdCollapseEnd'

折叠到最后,区域与可以折叠的噢!

.Text="

(Thisisatest.)"

在折叠的最后加入这些文字

扩展所选内容或区域

下列示例使用MoveEnd方法扩展所选内容的结尾以包含三个附加的单词(总共是4个!

)。

MoveLeft、MoveRight、MoveUp和MoveDown方法也可以用于扩展Selection对象。

SubExtendSelection()

Selection.MoveEndUnit:

=wdWord,Count:

=3

下列示例使用MoveEnd方法扩展区域,以包含活动文档中的前三个段落。

SubExtendRange()

SetrngParagraphs=ActiveDocument.Paragraphs

(1).Range

rngParagraphs.MoveEndUnit:

=wdParagraph,Count:

=2

重新定义Range对象

使用SetRange方法可重新定义现有的Range对象。

更改文字

通过更改某一区域中的内容可更改现有的文字。

下列指令通过将Text属性设为“The”来更改活动文档中的第一个单词。

SubChangeText()

ActiveDocument.Words

(1).Text="

The"

也可以使用Delete方法删除现有文本,然后使用InsertAfter或InsertBefore方法插入新文本。

下列示例删除活动文档的第一段,并插入新文本。

SubDeleteText()

DimrngFirstParagraphAsRange

SetrngFirstParagraph=ActiveDocument.Paragraphs

(1).Range

WithrngFirstParagraph

.Delete

.InsertAfterText:

.InsertParagraphAfter

上面的这个例子我们通常不用,我们更喜欢用下面

SubDeleteText1()

rngFirstParagraph.Text="

&

Chr(13)

八、将格式应用于文本

∙将格式应用于选定内容

∙将格式应用于某一区域

∙插入文本并应用字符和段落格式

∙在12磅和无之间切换段前间距

∙切换加粗格式

∙将左边距增加0.5英寸

将格式应用于选定内容

下列示例使用Selection属性将字符和段落格式应用于选定文本。

使用Font属性获得字体格式的属性和方法,使用ParagraphFormat属性获得段落格式的属性和方法。

SubFormatSelection()

WithSelection.Font

.Name="

TimesNewRoman"

.Size=14

.AllCaps=True'

全部大写

.LeftIndent=InchesToPoints(0.5)'

左缩进0.5英寸

.Space1'

这是单倍行距的缩写

将格式应用于某

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1