使用word的宏操作和VBA代码可以实现一些常用操作的自动化,从而大大提高工作的效率。
1 先来一个用word VBA代码建立宏的例子
1.1 显示开发工具选项卡
Office按钮→Excel选项→常用选项卡→勾选:在功能区显示开发工具选项卡;
1.2 启用宏
开发工具选项卡→宏安全性→勾选:启用所有宏;
1.3 新建宏
开发工具选项卡→Visual Basic→插入→模块→在代码窗口粘贴代码。
(先不管代码是怎样写的,用拿来主义,同样,一些常见的代码也可以到网上去找。)
Sub 设置页眉页脚页边距和段落()
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then ActiveWindow.Panes(2).Close
With ActiveWindow.ActivePane.View
.Type = wdPrintView
.SeekView = wdSeekCurrentPageHeader
Selection.WholeStory
Selection.Delete unit:=wdCharacter, Count:=1
'Selection.TypeText Text:="这是替换后的页眉"
With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary)
Set rng = .Range
rng.Text = "第 "
rng.Collapse wdCollapseEnd
ActiveDocument.Fields.Add rng, wdFieldPage, "Page"
Set rng = .Range
rng.Collapse wdCollapseEnd
rng.Text = " 页 / 共 "
rng.Collapse wdCollapseEnd
ActiveDocument.Fields.Add rng, wdFieldNumPages, "Pages"
Set rng = .Range
rng.Collapse wdCollapseEnd
rng.Text = " 页 "
.Range.Fields.Update
.Range.ParagraphFormat.Alignment = wdAlignParagraphRight
'隐藏页眉的横线;
.Range.Borders(wdBorderBottom).Visible = False
End With
.SeekView = wdSeekMainDocument
End With
WordBasic.ViewFooterOnly
Selection.WholeStory
Selection.Delete unit:=wdCharacter, Count:=1
'Selection.TypeText Text:="这是替换后的页脚"
Dim GetDocName
GetDocName = Left$(ActiveDocument.Name, Len(ActiveDocument.Name) - 4)
With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)
Set rng = .Range
rng.Text = GetDocName
rng.Collapse wdCollapseEnd
Set rng = .Range
rng.Collapse wdCollapseEnd
rng.Text = " 第 "
rng.Collapse wdCollapseEnd
ActiveDocument.Fields.Add rng, wdFieldPage, "Pages"
Set rng = .Range
rng.Collapse wdCollapseEnd
rng.Text = " 页 / 共 "
rng.Collapse wdCollapseEnd
ActiveDocument.Fields.Add rng, wdFieldNumPages, "Pages"
Set rng = .Range
rng.Collapse wdCollapseEnd
rng.Text = " 页 "
.Range.Fields.Update
.Range.ParagraphFormat.Alignment = wdAlignParagraphRight
End With
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
' 设置页面边距和页眉页脚边距
With ActiveDocument.PageSetup
.TopMargin = CentimetersToPoints(1.5)
.BottomMargin = CentimetersToPoints(1.7)
.LeftMargin = CentimetersToPoints(1.7)
.RightMargin = CentimetersToPoints(1.5)
.HeaderDistance = CentimetersToPoints(1)
.FooterDistance = CentimetersToPoints(1.2)
End With
ActiveWindow.ActivePane.VerticalPercentScrolled = 0
'设置段落格式,段后间距0.5行
Selection.WholeStory
With Selection.ParagraphFormat
.LineUnitAfter = 0.5
End With
Selection.HomeKey unit:=wdStory, Extend:=wsExtend
End Sub
至此已在word文档内新建了一个过程,过程名为设置页眉页脚页边距和段落;
1.4 运行宏
关闭代码窗口,回到word文档→开发工具选项卡→宏→选择宏:创建工作表目录→执行;
1.5 保存宏
文件→另存为→保存类型:启用宏的word文档→确定;(文件扩展名为docm)
1.6 让每一个word文档都可以运行建立的宏
上述建立的宏只能运行在当前文档,如果要让每一个word文档都可以运行建立的宏中,则需要将上述代码保存到Normal文档,具体操作如下:
开发工具选项卡→宏→Visaul Basic→左侧单击Normal工程→插入→模块→将上述的代码复制到右边的代码窗口。
(Excel对应的是VBAProject(Personal.xlsb)
2 宏和基本操作
宏是能够将用户的操作过程记录下来,并自动将所记录的操作转换成为VBA程序代码,然后这些代码可以由Excel解释执行。
2.1 录制宏
开发工具选项卡→录制宏→宏名:初始化→确定→进行需要的操作→开发工具选项卡→停止录制。
2.2 查看录制的宏
开发工具选项卡→宏→选择:初始化→编辑;
2.3 运行宏
选择其它工作表→开发工具选项卡→宏→选择:初始化→执行;
3 word VBA
VBA是Visual Basic application的缩写,是word的宏语言。用VBA编写的脚本由word解释执行。如上述的宏就是一堆VBA代码。
录制的宏只能机械地记录操作。而使用判断、循环等控制语句是VBA的优势所在,也是其功能强大的原因。
-End-