2008-06-10 16:08
1.打开Word,首先要建立宏,Word中有两种方法,分别是“录制宏”和“VB编程宏”。由于“VB编程宏”需要一定的VB基础,我们就不提了。就说“录制宏”,打开Word,在菜单栏中点工具-宏-录制新宏(见下图)。
图1
2.在出现的对话框中,有两个按钮,分别是“工具栏”和“键盘”。点击“键盘”
图2
图3
图4
3.以插入日期与时间为例子。在上图出现录制宏工具栏后,(我们进行宏所含步骤的操作)我们照常在菜单栏点插入-日期与时间。
图5
选择一个时间,然后点确定。接着点工具-宏-停止录制。宏录制完毕,以后每次要插入时间,直接按快捷键“Ctrl+7”就行了。
图6
4.上述快捷键操作宏以外,我们还可以制作宏按钮.我们在步骤2出现的对话框中点“工具栏”,在出现的“自定义”对话框中选择“命令”标签,将右侧“命令”下的宏按钮拖到工具栏或菜单栏。(然后录制宏,我们同样以插入日期和时间为例子),我们依次点插入-日期与时间,选择一个时间,然后点确定。接着点工具-宏-停止录制。
图7
如果你的宏已经用快捷键键方式录制好了,你想换成按钮,则点工具-自定义,选择“命令”标签,在左边“类别”下面点击“宏”,将右侧“命令”下的宏拖置菜单栏或工具栏即可。
图8
5.已经创立的宏按钮可以重命名和更改图标,点击工具-自定义,然后右击拖到菜单栏的宏按钮,即可出现编辑菜单。
图9
6.你要删除宏,点击工具-宏-宏,在出现的对话框中,选择想要删除的宏,点击删除即可。对于宏按钮,按住Alt键将宏按钮拖出菜单栏或工具栏即可。
2009-08-25 12:20
作者:宋志明
【IT168 实用技巧】每次统一考试之前,各位老师都会将自己试卷的Word电子稿交到我们办公室以便统一印刷。但每次我们都会发现,不少老师的试卷格式并没有按照要求使用八开页面、横排、分两栏,而且页面边距的设置也五花八门,很不统一。为此我们必须对这些试卷重新进行设置,造成很大麻烦。
现在,我们在Word 2007中设定一个“统一试卷格式”按钮,只要点击一下,就可以完成页面的设置工作,非常简单。如果你也会遇到类似问题,那么不妨也照此办理。
一、定制按纽
首先新建一个Word文件,点击左上角“Office按钮”,在弹出菜单中点击右下角“Word选项”按钮,在打开的对话框中选中“在功能区显示“开发工具”选项卡”复选项。关闭对话框后,在功能区会新添加“开发工具”选项卡。
单击“开发工具”选项卡“代码”功能组“录制宏”按钮, 在打开的“录制宏”对话框中,单击“将宏指定到”项目中“按钮”按钮,如图1所示。
图1 |
图2 |
图3 |
上面工作做完后,Word自动进入录制宏状态。点击功能区“页面布局”选项卡“页面设置”功能组右下角的对话框启动器,打开“页面设置”对话框。
点击对话框中“纸张”选项卡,在纸张“宽度”和“高度”输入框中分别输入“36.8”和“26”厘米。在“页边距”选项卡中设置“上”、“下”、“右”边距均为“2厘米”,将“左”边距设置为“4厘米”,将“纸张方向”选中为“横向”,如图4所示。在“文档网格”选项卡中设置“栏数”为“2”。设置完成后点击确定按钮关闭对话框。
图4 |
好了,现在随便打开某个文档,点击自定义快速访问工具栏上的“统一试卷格式”按钮,该文档的页面就会自动转成我们预设的格式了。 |
2009年11月02日 星期一 19:04
由于工作和学习的需要,笔者经常在网上阅读大量的信息,但由于网上的文字格式不一,所以笔者喜欢将它保存下来,并且用Word打开,精心设置其字体与背景後再阅读。可这样每次阅读都需重新设置一番,挺麻烦的。不久前看到了Word里的宏命令,仔细研究後发现,它可以帮我的大忙呢。只需进行如下设置,以後这样的事情一个按钮就可以搞定。
1. 任意打开一篇文挡,用鼠标任选一段文字。
2. 执行“工具→宏→录制新宏”命令,打开如图1所示对话框。
3. 在“录制宏”对话框的“宏名”文本框中输入宏的名称“读前设置”,在“将宏保存在”下拉列表框中选择“所有文档(normal.dot)”,然後单击〔工具栏〕按钮,打开图2所示“自定义”对话框。
4. 在“自定义”对话框中选择“命令”选项卡,在“命令”列表框中将显示输入的宏名。在该名称上按下鼠标左键将其拖到“常用”工具栏上,这样工具栏上就多了一个〔读前设置〕按钮了。
5. 单击〔关闭〕进入宏的录制过程。此时,“停止”浮动工具栏将出现在屏幕上,此工具栏上有两个按钮,左边是〔停止〕,右边是〔暂停〕(如图3)。
6. 执行“格式→字体”命令,在打开的“字体”对话框中选择“字体”选项卡,在对话框的“中文字体”下拉列表中选择“宋体”,在“字形”下拉列表中选择“常规”,在“字号”下拉列表中选择“小四”,在“字体颜色”下拉列表中选择“灰度-80%”,单击〔确定〕。
7. 执行“格式→背景→其他颜色”命令,在打开的“颜色”框中选择一种很浅的灰色,单击〔确定〕。
8. 单击“停止”工具栏上的〔停止〕按钮结束录制。
这样,以後只要在网上阅读文字,在Word里打开,先用“Ctrl+A”全选後,单击“常用”工具栏上的宏按钮〔读前设置〕,就可以看到很舒服的文字效果了。 |
概要 在 Word 打开新文档或现有文档时,您可以在 Word 中使用 AutoExec 和 AutoOpen 宏来建立默认路径、样式、链接、环境条件等。本文讨论了这些宏的运行方式以及在不同情况下的行为方式。 -------------------------------------------------------------------------------- AutoExec 如果 AutoExec 宏另存为默认模板 (Normal.dot) 的一部分,或另存为全局加载项的一部分,则在启动 Word 时 AutoExec 宏将运行。使用 AutoExec 宏,可在启动 Word 但创建或加载文档前进行调整。例如,在 Word 启动时,可以使用 AutoExec 宏更改默认目录。 可以用多种方法禁止 AutoExec 宏。一种方法是使用 /m 或 /embedding 开关,从命令行启动 Word。要使用这些开关,请单击开始,单击运行,在弹出的“运行”对话框中打开文本框中键入 winword /m 或 winword /embedding,然后单击确定。 另一种可用来禁止 AutoExec 宏的方法是:在启动 Word 时按住 Shift 键。从自动化客户端启动 Word 时,也会禁止 AutoExec 宏。 -------------------------------------------------------------------------------- AutoOpen 打开新文档后,会运行 AutoOpen 宏。以下列方式打开文档时,会运行 AutoOpen 宏: • 使用文件菜单上的打开命令。 • 使用 FileOpen 或 FileFind 命令。 • 从文件菜单上的“最近使用过的”(MRU) 列表中选择一个文档。 如果 AutoOpen 宏另存为某个文档的一部分,或者另存为该文档所基于的模板的一部分,则在打开此文档时,AutoOpen 宏会运行。如果 AutoOpen 宏另存为全局加载项的一部分,则该宏不会运行。 打开文档时按住 Shift 键可以阻止 AutoOpen 宏运行。 -------------------------------------------------------------------------------- 创建 AutoExec 宏和 AutoOpen 宏 下面给出创建 AutoExec 宏和 AutoOpen 宏的步骤: 1、在 Word 中创建一个新的空白文档。 2、选择菜单“工具”——“宏”——“安全性”命令。 3、在弹出的“安全性”对话框中,单击“安全级”选项卡,然后选择“中”。单击“可靠来源”选项卡,选择“信任所有安装的加载项和模板”,然后单击确定按钮。 4、按下列步骤创建 AutoExec 宏。 1) 选择菜单“工具”——“宏”——“录制新宏”命令。 2) 在录制宏对话框中,在宏名下键入 AutoExec,然后单击确定。默认情况下,宏保存在 Normal 模板中。一个包含两个按钮的小命令栏就会出现在 Word 文档中,或出现在 Word 桌面上的其他地方。找到该命令栏然后单击方形(停止录制)按钮以停止录制。 3) 在工具菜单上,指向宏,然后单击宏。在宏列表中选择 AutoExec,然后单击编辑。 4) 向 AutoExec 宏中添加以下代码: MsgBox "You're seeing the AutoExec macro in action", vbMsgBoxSetForeground 5)在 Microsoft Visual Basic 编辑器中的文件菜单上,单击保存 Normal,然后关闭 Visual Basic 编辑器。 5、按照创建 AutoExec 宏的相同步骤,创建 AutoOpen 宏。这时在每一步骤中使用 AutoOpen 表达式替换 AutoExec 表达式。 6、将文档另存为 C:\\Yourfile.doc,关闭此文档,然后退出 Word。 7、使用下表中描述的其他方法在 Word 中打开此文档,观察宏运行和不运行时的情况。 不同情况下宏的行为 下表概括了在启动 Word 或通过不同方法打开文档时这两种宏的行为: 操作 AutoExec AutoOpen ----------------------------------------------------------------------------------- 通过在命令提示符处键入以下命令, 运行 不运行 从空白文档启动 Word: WinWord.exe ----------------------------------------------------------------------------------- 通过在命令提示符处键入以下命令, 运行 运行 从保存的文档启动 Word: Winword.exe C:\\ ----------------------------------------------------------------------------------- 通过在命令提示符处键入以下命令, 不运行 运行 在 OLE 容器中嵌入 Word 文档: WinWord.exe /embedding C:\\ ----------------------------------------------------------------------------------- 通过使用以下代码 不运行 运行 自动运行 Word 并 打开 C:\\ Set oWord = CreateObject("Word.Application") oWord.Visible = True oWord.Documents.Open "C:\\YourFile.doc" ----------------------------------------------------------------------------------- 在 Internet Explorer 或 WebBrowser 控件中 不运行 运行 浏览到该文档 |
2009年10月30日 星期五 21:04
在进行文字排版时经常要插入字符,但在符号框中查找费时费力又费眼!其实,我们可以利用“宏”来为我们解决这个问题。对于一些常用的符号(如“$”),可以使用宏来使工作简化。具体方法是:
1. 首先,依次选择“工具→宏→录制新宏”菜单命令,接着弹出“录制宏”界面(如图1)。
图1
2. 在“宏名”下面的输入框中输入新宏的名称,如“Yuan”,接着单击“键盘”图标。
3. 在弹出的“自定义键盘”界面中指定快捷键,如“Ctrl+Y”,单击“指定”按钮后单击“关闭”按钮回到“录制宏”界面(如图2)。单击“确定”按钮启动记录器。
图2
4. 依次选择“插入→符号”菜单命令,接着弹出“符号”界面。选择“符号”选项卡,在“符号”框中选择“$”,单击“插入”按钮后再单击“关闭”按钮。另外,也可以指定到工具栏,从弹出的“自定义”对话框中的“命令”栏中把“Normal.NewMacros.Yuan”拖放到工具栏中。
5. 单击“停止录制”工具栏中的“停止录制”按钮。
6. 依次选择“工具→宏→宏”菜单命令,接着弹出“宏”对话框(如图3)。
图3
7. 选择我们指定的宏名称,再单击“编辑”按钮。这时我们可以从中看到以下代码:
Sub Yuan()
Selection.InsertSymbol Font:="楷体-GB2312",CharacterNumber:=-27,Unicode:=True
End Sub
以后,当你需要插入字符“$”时,只需按下“Ctrl+Y”组合键。或者是在工具栏单击“Normal.NewMacros.Yuan”便可以了。是不是很简单?你也来试试吧! 本文来自-编程入门网:http://www.bianceng.cn/Word/word201.htm |
2009-09-09 18:23
我们平时在使用Word软件的过程中,时不时地要调用一些外部程序,如截图软件、通讯簿、计算器等。通常情况下,调用以上的这些外部程序都得进入“开始”菜单或者回到桌面双击程序快捷图标,感觉很繁琐。其实我们可以在Word中将它们以图标的形式放到工具条上,随用随点,非常方便。
具体操作方法如下:
启动Word软件后,执行“工具→宏→宏…”命令,调出“宏”对话框,在“宏名”文本框中键入宏的名称,以“ACDSee”为例,然后单击“创建”按钮,Word会自动进入VisualBasic编辑器(图1)。
VB代码窗口中已经自动加入了几行代码,在“SubACDSee()”和“EndSub”之间,加入我们自己的代码:Shell "C:Program FilesACD SystemsACDSee10.0ACDSee10.exe",Shell是Word宏中用来运行外部程序的命令,空一格然后在西文双引号之间输入你想要运行的程序的路径和程序名即可,然后关闭VB编辑器回到Word编辑窗口中(图2)。
执行“工具→自定义”命令调出“自定义”对话框,单击“命令”标签,在左边“类别”中选择“宏”,然后将右边的“命令”框中一个名为“Normal.NewMacros.ACDSee”的命令拖放到工具栏适当的位置。右键单击这个新的命令按钮,从右键菜单中选择“默认样式”即可。你还可通过“更改按钮图标”为此按钮更换图标。
之后你在Word中编辑文档时,就可以通过单击这个按钮随时调用ACDSee看图片了。其他程序快捷按钮的定制可依此类推。 |
2009年09月02日 星期三 15:57
五、启动 Word 而不运行宏
检查您是否在使用一个 Microsoft Visual Basic for Applications (VBA) 宏来启动 Word。您可能运行了一个启动 Word 时不显示任何菜单或工具栏的 VBA 宏。
如果您是通过快捷方式启动 Word 的,请检查快捷方式所使用的命令行,看看它是否包含宏名称。为此,请按照下列步骤操作:
1.查找用于运行 Word 的快捷方式。
2.右键单击该快捷方式,然后单击快捷菜单上的属性。
3.单击快捷方式选项卡。
4.在目标框中,查找类似于以下内容的命令行:
"C:\\Program Files\\Microsoft Office\\Office10\\WINWORD.EXE" /mmacro name
其中 /mmacro name 是宏的名称。
5.如果在命令行中看到 /mmacro name,请将其删除,然后照常启动 Word。
注意:后面跟着宏名称的 /m 开关会在启动 Word 时运行一个特定的宏。该 /m 开关还会阻止 Word 运行任何自动执行宏。
如果 Word 能够正常启动,则说明该问题已经解决。出现此问题的原因是,启动 Word 时运行了一个宏,而这个宏更改了 Word 窗口的外观。
六、创建“打印预览”宏
在 Word 中更改“打印预览”宏以显示您需要的设置。
例如,要在打印预览中自动显示格式工具栏,请按照下列步骤操作:
1.在工具菜单上,指向宏,然后单击宏。
2.将“宏的位置”框中的选择更改为 Word 命令。
3.在宏名列表中,选择 FilePrintPreview。
4.将“宏的位置”框中的设置更改为“Normal.dot(共用模板)”。
5.单击创建。
6.创建下面的宏:
7.Sub FilePrintPreview()
8.'
9.' FilePrintPreview Macro
10.' Displays full pages as they will be printed.
11.'
12. ActiveDocument.PrintPreview
13. CommandBars("Formatting").Visible = True
End Sub
14.在文件菜单上,单击“关闭并返回到 Microsoft Word”。 |
Option Explicit
Sub 小写金额变大写()
Dim Numeric As Currency, IntPart As Long, DecimalPart As Byte, MyField As Field, Lable As String
Dim Jiao As Byte, Fen As Byte, Oddment As String, Odd As String, MyChinese As String
Const ZWDX As String = "壹贰叁肆伍陆柒捌玖零" '定义一个中文大写汉字常量
On Error Resume Next '错误忽略
With Selection
Numeric = VBA.Round(VBA.Val(.Text), 2) '四舍五入保留小数点后两位
'判断是否在表格中
' If .Information(wdWithInTable) Then _
.MoveRight unit:=wdCell Else .MoveRight unit:=wdCharacter
'对数据进行判断,是否在指定的范围内
If VBA.Abs(Numeric) > 21474837 Then MsgBox "数值超过范围!", _
vbOKOnly + vbExclamation, "Warning": Exit Sub
IntPart = Int(VBA.Abs(Numeric)) '定义一个正整数
Odd = VBA.IIf(IntPart = 0, "", "圆") '定义一个STRING变量
'插入中文大写前的标签
' Lable = VBA.IIf(Numeric = VBA.Abs(Numeric), "人民币金额大写: ", "人民币金额大写: 负")
'对小数点后面二位数进行择定
DecimalPart = (VBA.Abs(Numeric) - IntPart) * 100
Select Case DecimalPart
Case Is = 0 '如果是0,即是选定的数据为整数
Oddment = VBA.IIf(Odd = "", "", Odd & "整")
Case Is < 10 '<10,即是零头是分
Oddment = VBA.IIf(Odd <> "", "圆零" & VBA.Mid(ZWDX, DecimalPart, 1) & "分", _
VBA.Mid(ZWDX, DecimalPart, 1) & "分")
Case 10, 20, 30, 40, 50, 60, 70, 80, 90 '如果是角整
Oddment = "圆" & VBA.Mid(ZWDX, DecimalPart / 10, 1) & "角整"
Case Else '既有角,又有分的情况
Jiao = VBA.Left(CStr(DecimalPart), 1) '取得角面值
Fen = VBA.Right(CStr(DecimalPart), 1) '取得分面值
Oddment = Odd & VBA.Mid(ZWDX, Jiao, 1) & "角" '转换为角的中文大写
Oddment = Oddment & VBA.Mid(ZWDX, Fen, 1) & "分" '转换为分的中文大写
End Select
'指定区域插入中文大写格式的域
Set MyField = .Fields.Add(Range:=.Range, Text:="= " & IntPart & " \\*CHINESENUM2")
MyField.Select '选定域(最后是用指定文本覆盖选定区域)
'如果仅有角分情况下,Mychinese为""
MyChinese = VBA.IIf(MyField.Result <> "零", MyField.Result, "")
.Text = MyChinese & Oddment
End With
End Sub
'使用方法,在需要大写金额的地方写上相应的小写金额,并写中.安ALT+F8,调出宏,在列表里选择"小写金额变大写运行.小写就变成大写了 |
2009年10月19日 星期一 18:55
当使用Visual Basic时一个常见的任务就是在文档中指定一块区域,然后对它进行处理,比如插入文字或应用格式等。例如,用户可能想编写一个宏,来对文档中某个部分里的某个单词或短语进行定位。那就可以使用一个Range对象来表示想在其中搜索特定单词或短语的部分文档。在确定Range对象后,用户能够应用该对象的方法和属性来修改相应范围中的内容。
一个Range对象代表了文档中的一块连续的区域。每一个Range对象都由一个起始字符位置和一个终止字符位置来定义。与用户在文档中使用书签的方法类似,可以在Visual Basic中使用Range对象来识别一个文档的特定部分。一个Range对象既可以和插入点一样小,也可以和整个文档一样大。但是,与书签不同,Range对象仅仅在定义它的过程正在运行时才存在。
Range对象同选定内容相互;也就是说,可以定义和修改范围而不会改变选定内容。用户也可以在文档中定义多个范围,而此时每个文档窗格中仅有一个选定内容。
Start、End和StoryType属性唯一地确定了一个Range对象。Start和End属性分别返回或者设置Range对象的起始和结束字符的位置。每个文档构成部分起始处的字符位置是0 (zero),而第一个字符之后的位置是1,依此类推。StoryType 属性的WdStoryType常量可以表示十一种不同的文档构成部分类型。例如,如果在注脚区域中有一个Range对象,那么StoryType属性返回wdFootnotesStory。要对文档构成部分作进一步了解,请参阅本节后面的“运用文档构成部分”一节的有关内容。
使用Range对象来代替Selection对象
宏录制器会经常创建一个使用Selection属性来控制操纵Selection对象的宏。但是,用户通常可以用一个或几个Range对象来以很少的命令完成相同的任务。以下的示例是用宏录制器创建的。该宏对文档中的前两个单词进行加粗。
Selection. HomeKey Unit :=wdStory
Selection. MoveRight Unit :=wdWord, Count:=2, Extend :=wdExtend
Selection. Font.Bold = wdToggle
以下的示例没有使用Selection对象而完成了相同的任务。
ActiveDocument. Range (Start:=0, End :=ActiveDocument. Words(2). End) .Bold = True
以下的示例对文档中的前两个单词进行加粗,然后插入一个新的段落。
Selection. HomeKey Unit :=wdStory
Selection. MoveRight Unit :=wdWord, Count :=2, Extend :=wdExtend
Selection. Font.Bold = wdToggle
Selection. MoveRight Unit :=wdCharacter, Count:=1
Selection. TypeParagraph
以下的示例没有使用Selection对象就完成了上述示例中的同样任务。
Set myRange = ActiveDocument. Range(Start:=0, End :=ActiveDocument. Words(2). End)
myRange. Bold = True
myRange. InsertParagraphAfter
前面的两个示例改变了活动文档中的格式但没有改变选定内容。在大多数的场合下,Range对象比Selection对象更可取,原因如下:
用户可以定义和使用多个Range对象,而在每个文档窗口中只能有一个Selection对象。
控制管理Range对象不会改变所选择的文字内容。
控制管理Range对象比运用Selection对象速度要快。
使用Range方法返回Range对象
可以使用Range方法在特定文档中创建一个Range对象。Range方法(可以从Document对象使用)返回一个Range对象,该对象定位于主文档构成部分中,有给定的起始点和结束点。以下示例创建了一个Range对象,并且赋给myRange变量。
Set myRange = ActiveDocument. Range (Start :=0, End :=10)
在上述示例中,myRange表示活动文档中的前十个字符。当对保存在myRange变量中的Range对象应用一种属性或方法时,就可以看到已经创建的Range对象。以下的示例对活动文档中的前十个字符进行加粗。
Set myRange = ActiveDocument. Range(Start :=0, End :=10)
myRange. Bold = True
当用户需要对一个Range对象进行多次引用时,可以使用Set语句来设置一个等价于Range对象的变量。但是,如果用户需要在一个对象上执行一次操作,那么就没有必要将对象保存到变量中。用户可以使用一条确定范围并且改变Bold属性的命令来取得同样的结果;如以下示例所示。
ActiveDocument. Range(Start :=0, End :=10). Bold = True
和书签类似,一个范围能够在文档中横跨一组字符,也可以标记其中的一个位置。在以下的示例中,Range对象的起始和终止点相同,并且该范围内不包含任何文字。该示例在活动文档的起始处插入文字。
ActiveDocument. Range(Start :=0, End :=0). InsertBefore Text :="Hello "
用户可以通过使用如上述示例所示的字符位置数字,或者随同Selection对象、Bookmark对象或Range对象使用Start属性和End属性,来定义一个范围的起始和终止位置。以下示例创建了一个Range对象,来表示活动文档中的第三和第四个句子。
Set myDoc = ActiveDocument
Set myRange = myDoc. Range (Start :=myDoc. Sentences(3). Start, _
End :=myDoc. Sentences (4). End)
技巧 Range对象在文档中的表示不可见。但是,用户可以使用Select方法来选定一个Range对象,以保证Range对象表示正确的文字范围。在以下示例中的Range对象表示活动文档中的前三个段落。在该宏运行完毕之后,选定内容是指包含在aRange变量中的文字范围。
Set aRange = ActiveDocument.Range (Start :=0, _
End :=ActiveDocument. Paragraphs (3). Range. End)
aRange. Select
使用Range属性来返回一个Range对象
在许多对象都可以使用Range属性-例如,Paragraph对象、Bookmark对象、Endnote对象以及Cell对象-Range属性用来返回一个Range对象。以下的示例返回了一个Range对象,该对象表示活动文档的第一段。
Set myRange = ActiveDocument.Paragraphs (1). Range
在创建了对Range对象的引用之后,用户可以使用它的任何属性或方法来修改该范围。以下的示例复制了活动文档中的第一段。
Set myRange = ActiveDocument. Paragraphs (1). Range
myRange. Copy
以下的示例复制了活动文档中表格一的第一行。
ActiveDocument. Tables(1). Rows(1). Range. Copy
以下的示例显示了活动文档中由第一个书签标记的文字。Range属性可以在Bookmark对象中使用。
MsgBox ActiveDocument. Bookmarks (1). Range. Text
如果用户需要对同一个Range对象应用多种属性或方法,那么可以使用With…End With语句。以下的示例为活动文档的第一段设定了文字的格式。
Set myRange = ActiveDocument. Paragraphs (1). Range
With myRange
.Bold = True
.ParagraphFormat. Alignment = wdAlignParagraphCenter
.Font. Name = "Arial"
End With
要获得关于返回Range对象的其他示例,请参阅“帮助”中的“Range属性”。
修改文档的一部分
Visual Basic包含了一些对象,可以使用它们来修改以下类型的文档元素:字符、单词、句子、段落以及节。下面的表格包含了对应于这些文档元素的属性和属性所返回的对象。
表 达 式
返 回 的 对 象
Word (index)
Range对象
Characters (index)
Range对象
Sentences (index)
Range对象
Paragraphs (index)
Paragraph对象
Sections (index)
Section对象
当用户不带index来使用这些属性时,就返回一个同名的集合-例如,Paragraphs属性返回Paragraphs集合。但是,如果用户使用index来确定在某个集合中的一项,就返回上述表格第二列中的对象-例如,Words(1)返回一个Range对象。用户可以使用任何范围属性或方法来修改Range对象,如以下示例所示,该示例将选定内容中的第一个单词复制到剪贴板中。
Selection. Words (1). Copy
在Paragraphs集合以及Sections集合中的集合项分别是Paragraph对象和Section对象,而不是Range对象。但是,在Paragraph对象和Section对象中都可以使用Range属性(它返回一个Range对象)。以下的示例将获得文档中的第一段复制到剪贴板中。
ActiveDocument. Paragraphs(1). Range. Copy
上述表格中所有的文档元素属性都可以在Document对象、Selection对象以及Range对象中使用,如以下三个示例所示。
本例设置活动文档中第一个单词的大小写。
ActiveDocument. Words(1). Case = wdUpperCase
本例设置选中的第一节的下边距为0.5英寸。
Selection.Sections(1). PageSetup. BottomMargin = InchesToPoints(0.5)
本例设置活动文档中的文字为两倍行距(Content属性返回一个Range对象,该对象表示主文档构成部分)。
ActiveDocument. Content. ParagraphFormat. Space2
修改一组文档元素
要修改由一组文本元素(字符、单词、句子、段落或节)构成的范围,可以创建一个包含文档元素的Range对象。随同Range对象使用Start和End属性,用户可以新建一个Range对象,该对象引用了一组文档元素。以下的示例创建了一个Range对象(myRange),该对象引用了活动文档中的前三个单词,然后将这些单词的字体改为Arial。
Set Doc = ActiveDocument
Set myRange = Doc.Range (Start :=Doc. Words(1). Start, End :=Doc. Words(3). End)
myRange. Font. Name = "Arial"
以下的示例创建了一个Range对象,该对象起始于第二段的开头,到第四段之后结束。
Set myDoc = ActiveDocument
Set myRange = myDoc. Range (Start :=myDoc. Paragraphs(2). Range. Start, _
End :=myDoc. Paragraphs(4). Range. End)
以下的示例创建了一个Range对象(aRange),该对象起始于第二段的开头,到第三段之后结束。ParagraphFormat属性用来访问诸如SpaceBefore和SpaceAfter这样的设置段落格式的属性。
Set Doc = ActiveDocument
Set aRange = Doc. Range (Start :=Doc. Paragraphs(2). Range. Start, _
End :=Doc. Paragraphs(3). Range. End)
With aRange. ParagraphFormat
.Space1
.SpaceAfter = 6
.SpaceBefore = 6
End With
返回或设置范围中的文字
可以使用Text属性来返回或设置一个Range对象中的内容。以下的示例返回了活动文档中的第一个单词。
strText = ActiveDocument. Words(1). Text
以下示例将活动文档中的第一个单词改为“Hello”。
ActiveDocument. Words(1). Text = "Hello"
可以使用InsertAfter 方法或者InsertBefore方法在一个范围的前面或后面插入文字。以下的示例在活动文档的第二段之前插入文字。
ActiveDocument. Paragraphs(2). Range. InsertBefore Text :="In the beginning "
在使用InsertAfter 方法或者InsertBefore方法之后,范围随之扩大,包含新的文字。但是,也可以使用Collapse方法将范围折叠到起始位置或终止位置。以下的示例在现有文档之前插入单词“Hello”,然后将范围折叠到它的起始位置(在单词“Hello”之前)。
With ActiveDocument.Paragraphs(2).Range
.InsertBefore Text:="Hello "
.Collapse Direction:=wdCollapseStart
End With
设置范围中文字的格式
可以使用Font属性来取得设置字符格式的属性和方法,而使用ParagraphFormat属性来取得设置段落格式的属性和方法。以下的示例设置了活动文档中第一段的字符格式和段落格式。
With ActiveDocument. Paragraphs(1). Range. Font
.Name = "Times New Roman"
.Size = 14
.AllCaps = True
End With
With ActiveDocument. Paragraphs(1). Range. ParagraphFormat
.LeftIndent = InchesToPoints(0.5)
.Space1
End With
重新定义Range对象
可以使用SetRange方法来重新定义一个已经存在的Range对象。以下的示例定义myRange为当前的选定内容。SetRange方法重新定义myRange,使它表示当前的选定内容加上随后的十个字符。
Set myRange = Selection. Range
myRange. SetRange Start :=myRange. Start, End :=myRange. End + 10
要获得重新定义Range对象的其他信息和示例,请参阅“帮助”中“SetRange方法”。
用户也可以通过改变Start属性和End属性的值,或者使用MoveStart方法或MoveEnd方法来重新定义一个Range对象。以下的示例重新定义myRange对象,使它表示当前的选定内容加上随后的十个字符。
Set myRange = Selection. Range
myRange. End = myRange. End + 10
以下的示例使用MoveEnd方法扩展了myRange,使它包含下一段。
Set myRange = ActiveDocument. Paragraphs(2)
myRange. MoveEnd Unit :=wdParagraph, Count :=1
在范围内的段落中循环
可以通过几种不同的方法在范围内的段落中进行循环。本节包含使用For Each...Next语句和Next属性及方法在范围内的段落中进行循环的内容。也可以使用同样的技术在范围内的字符、单词或句子中进行循环。
使用For Each...Next语句
建议在范围内进行段落循环时使用For Each...Next语句,另外建议在集合内进行循环时也同样使用该语句。以下的示例在获得文档的前五段中进行循环,在每段之前添加文字。
Set myDoc = ActiveDocument
Set myRange = myDoc.Range (Start:=myDoc. Paragraphs(1). Range. Start, _
End :=myDoc. Paragraphs(5). Range. End)
For Each para In myRange. Paragraphs
para.Range. InsertBefore "Question:" & vbTab
Next para
假定用户想修改上述的代码,在范围内对用户选定的段落进行循环。可以使用Selection属性来表示选定内容中的各个段落。以下的示例在选定内容的段落中进行循环,去除加粗格式。
For Each para In Selection. Paragraphs
para.Range. Bold = False
Next para
使用Next属性或方法
用户也可以使用Next属性和方法在范围的段落中进行循环。以下的示例说明了怎样在范围的单词中进行循环,将每个单词增大一点字号。
Set myRange = ActiveDocument.Words(1)
For i = 1 To 5
myRange. Font. Size = myRange. Font. Size + i
Set myRange = myRange. Next(Unit :=wdWord, Count :=1)
Next i
以下的示例在范围的段落中进行循环,将范围的对齐方式由居中改为左对齐。该示例也使用Next属性重新定义了myRange,使它表示下一段。
Set myRange = ActiveDocument. Paragraphs(1). Range
For i = 1 To 5
If myRange. Paragraphs(1). Alignment = wdAlignParagraphCenter Then
myRange. Paragraphs(1). Alignment = wdAlignParagraphLeft
End If
Set myRange = myRange. Paragraphs(1). Next. Range
Next i
将Range对象赋值给变量
可以通过几种途径来把一个已经存在的Range对象赋给一个变量。在以下示例中,变量Range1和变量Range2都表示Range对象。在该示例中命令把活动文档中第一和第二个单词分别赋值给变量Range1和Range2。
Set Range1 = ActiveDocument. Words(1)
Set Range2 = ActiveDocument. Words(2)
设置一个Range对象变量等价于另一个Range对象变量
以下的示例创建变量Range2,并且与Range1相同。
Set Range2 = Range1
现在就有两个变量表示着同样的范围。当用户调整Range2的起始位置、终止位置或者文字时,所做的更改也同样会影响到Range1,反之亦然。
以下的示例将Range1默认属性 (Text属性)的值赋给Range2的默认属性。在此示例中的代码等价于Range2. Text = Range1. Text,它没有改变Range对象实际所表示的内容,它仅仅改变Range2的contents (text)。
Range2 = Range1
这两个范围(Range2和Range1)包含有相同的内容,但是它们可能指向文档中的不同位置,或者干脆是不同的文档。
使用Duplicate属性
以下的示例创建了一个新复制的Range对象,Range2,该对象有着和Range1一样的起始位置、终止位置以及文字内容。
Set Range2 = Range1. Duplicate
如果改变了Range1的起始位置或是终止位置,这种改变并不会影响到Range2,反之亦然。但是,因为这两个范围指向文档的相同位置,改变一个范围中的文字内容也会同时改变另一个范围的文字内容。
运用文档构成部分
一个文档构成部分是文档中的一个区域,该区域中的文字区别于文档中的其他区域。例如,如果一个文档包含了正文文字、脚注和页眉,则该文档就包含了文档正文部分、脚注部分和页眉部分。
可以使用StoryType属性来返回指定范围、选定内容或书签的文档构成部分。如果在脚注部分中包含了选定内容,那么下例将关闭活动窗口中的脚注窗格。
ActiveWindow. View. Type = wdNormalView
If Selection. StoryType = wdFootnotesStory Then ActiveWindow. ActivePane. Close
StoryRanges集合包含了一个文档中每种有效的文档构成部分类型的第一个过程部分范围。可以使用NextStoryRange方法来返回以后的文档构成部分。以下的示例搜索活动文档中的每个文档过程部分来找出文字“Microsoft Word”。该示例也将它每次找到的文字全部设置为斜体。
For Each myStoryRange In ActiveDocument. StoryRanges myStoryRange. Find. Execute FindText :="Microsoft Word", Forward :=True While myStoryRange. Find. Found myStoryRange. Italic = True myStoryRange. Find.Execute FindText :="Microsoft Word", _ Forward :=True, Format :=True Wend While Not (myStoryRange. NextStoryRange Is Nothing) Set myStoryRange = myStoryRange. NextStoryRange myStoryRange. Find.Execute FindText :="Microsoft Word", Forward :=True While myStoryRange. Find. Found myStoryRange. Italic = True myStoryRange. Find.Execute FindText :="Microsoft Word", _ Forward :=True, Format :=True Wend Wend Next myStoryRange |
2009年08月28日 星期五 11:26
如果我们需要把Word文档中的全角数字全部改为半角数字,手头又没有合适的转换软件,应该怎么做呢?
打开Word的“查找与替换”,怎么也找不到全角改半角的有关设置。执行十次替换虽然可以达到目的,可以步骤也过于繁琐。思前想后,决定用“宏”这个杀手锏。
1.执行“工具”→“宏”→“录制新宏...”,在“宏名”框中输入“数字全角转半角”,确定,将出现一个“录制宏”工具栏,关闭它。
2.执行“工具”→“宏”→“宏...”,选择“数字全角转半角”,单击“编辑”按钮,打开vba编辑窗口,录入代码结果如下:
Sub 数字全角转半角()
'使用前需先选中要替换的区域
Dim qjsz, bjsz As String, i As Integer '定义qjsz(全角数字)、bjsz(半角数字)为字符串型,i为整数型
qjsz = "0123456789"
bjsz = "01234567"
For i = 1 To 10 '循环10次
With Selection.Find
.Text = Mid(qjsz, i, 1) 'mid函数:返回文本字符串中从指定位置开始的特定数目的字符,每次取一个数字
.Replacement.Text = Mid(bjsz, i, 1) '将用于替换的相应位置的半角数字
.Format = False '保留替换前的字符格式
.Execute Replace:=wdReplaceAll '用半角数字替换全角数字
End With
Next i
End Sub
3.关闭vba编辑窗口,选中要改变数字格式的文字区域,执行“工具”→“宏”→“宏...”→“数字全角转半角”。一切OK! |
2009-08-13 22:57
Sub Macro1()
'
' Macro1 Macro
' 宏在 2009-6-11 由 fazl 录制
'
Dim strName As String
With Selection
.HomeKey wdStory '光标移到文档首部
.MoveEnd Unit:=wdLine, Count:=1 '选择首行
strName = Trim$(Replace$(.Text, Chr(11), "")) '取首行文本并删除可能的手工断行符、前后空格
ChangeFileOpenDirectory _
"C:\\Documents and Settings\\edu.etc\桌面\Linux\\LinuxTxT\\"
ActiveDocument.SaveAs FileName:=strName, _
FileFormat:=wdFormatText, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, Encoding:=936, InsertLineBreaks:=True, _
AllowSubstitutions:=False, LineEnding:=wdCRLF
End With
End Sub
Sub Macro4()
'
' Macro4 Macro
' 宏在 2009-6-11 由 fazl 录制
'
ChangeFileOpenDirectory _
"C:\\Documents and Settings\\edu.etc\桌面\Linux\\LinuxTxT\\"
ActiveDocument.SaveAs FileName:=ActiveDocument.Name & " by fazl" & ".txt ", _
FileFormat:=wdFormatText, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, Encoding:=936, InsertLineBreaks:=True, _
AllowSubstitutions:=False, LineEnding:=wdCRLF
End Sub
Sub Macro1()
'
' Macro1 Macro
' 宏在 2009-6-11 由 fazl 录制
'
Dim strName As String
' With Selection
' .HomeKey wdStory '光标移到文档首部
'.MoveEnd Unit:=wdLine, Count:=1 '选择首行
strName = Trim$(Replace$(ActiveDocument.Name, ".doc", ".txt")) '取首行文本并删除可能的手工断行符、前后空格
ChangeFileOpenDirectory _
"C:\\Documents and Settings\\edu.etc\桌面\Linux\\"
ActiveDocument.SaveAs FileName:=strName, _
FileFormat:=wdFormatText, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, Encoding:=936, InsertLineBreaks:=True, _
AllowSubstitutions:=False, LineEnding:=wdCRLF
'End With
End Sub
Sub Macro4()
'
' Macro4 Macro
' 宏在 2009-6-11 由 fazl 录制
'
ChangeFileOpenDirectory _
"C:\\Documents and Settings\\edu.etc\桌面\Linux\\LinuxTxT\\"
ActiveDocument.SaveAs FileName:=ActiveDocument.Name & " by fazl" & ".txt ", _
FileFormat:=wdFormatText, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, Encoding:=936, InsertLineBreaks:=True, _
AllowSubstitutions:=False, LineEnding:=wdCRLF
End Sub |