没有合适的资源?快使用搜索试试~ 我知道了~
用VBA宏提高Word操作效率
3星 · 超过75%的资源 需积分: 50 34 下载量 190 浏览量
2012-08-21
13:24:53
上传
评论 1
收藏 926KB DOC 举报
温馨提示
试读
26页
实例1:统计修订的字数 实例2:快速提取脚注内容 实例3:从任意页面编排页码 实例4:将多页文档分解成单页文档 实例5:快速更新参考文献编号 实例6:快转大纲级别并自动提取目录 实例7:完成虚框→实框的批量转换 实例8:批量实现缩放打印 实例9:判断图片属性 实例10:利用文本文件和VBA完成批量替换 实例11:对文档内容进行顺序排列 实例12:替换Word文档插图的超链接 实例13:快速实现括号的右对齐 实例14:快速重排试题 实例15:为文档的每页添加固定内容 实例16:提取第一行作为文件名称 实例17:批量实现图片的等比例缩 实例18:实现图形的精确旋转 实例19:批量选择所有表格 实例20:批量转换脚注
资源推荐
资源详情
资源评论
在日常工作和生活中,Word 是我们习惯使用的办公软件,很多时候为了某些“变态”的要求,
往往需要通过大量繁复的步骤进行操作,效率相当之低。
其实,利用 VBA 宏代码,可以大大提高工作效率,本文以 Word 2003/2007 这两个应用
最为广泛的版本为例,介绍一些比较典型的应用实例。
实例 1:统计修订的字数
在实际工作中,我们经常会对文档进行修改,为了不同用户查阅的方便,一般都会使用修订模
式,此时会在文档中清楚的显示出来,但增加的字数和删除的字数却并未被统计出来。难道只
能手工统计?
利用 VBA 宏代码,可以非常方便的统计出修订过程中增加的字数和删除的字数,具体代码如
下:
Sub test()
Dim Rev As Revision, c1 As Long, n1 As Integer, a As String
Dim Wd As Range, c2 As Long, n2 As Integer, b As String
For Each Rev In ActiveDocument.Revisions
If Rev.Type = wdRevisionInsert Then
For Each Wd In Rev.Range.Words
c1 = c1 + IIf(Wd Like "[一-龥]*", Wd.Characters.Count, 1)
Next
n1 = n1 + 1
a = a & Rev.Range.text & vbTab
ElseIf Rev.Type = wdRevisionDelete Then
For Each Wd In Rev.Range.Words
c2 = c2 + IIf(Wd Like "[一-龥]*", Wd.Characters.Count, 1)
Next
n2 = n2 + 1
b = b & Rev.Range.text & vbTab
End If
Next
MsgBox "增加内容" & n1 & "处共" & c1 & "字;删除内容" &
n2 & "处共" & c2 & "字。"
End Sub
上述代码主
要是基于
Word 2007
对于 Words
集合对象的判
断进行统计,宏名称“test”可以任意取;“[一-龥]”表示所有中文汉字。
代码检查无误之后,单击工具栏上的“保存”按钮执行保存操作,返回 Word 窗口之后,按下
A l t+F8 组合键,打开“宏”对话框,选择列表框中的“test”,单击右侧的“运行”按钮,很快会
看到准确的结果,包括增加和删除共几种、多少字,这样就清晰多了。
实例 2:快速提取脚注内容
同事传过来一个文件,要求将脚注的内容提取出来,文档如下图所示,其中作了几处脚注,
现在要求将脚注的内容提取到正文中相应脚注编号的位置,在这里添加标记(JZ:*),此处的“*”
指脚注的内容(不含序号,如此文①和②),同时删除原来的编号。
如果通过手
工的方法进行
操作,既麻烦
也不方便,其
实这里可以利
用 VBA 代码解决这一问题,代码如下:
Sub test()
Dim oFootNote As Footnote, myRange As Range
Dim BeforeName As String, BeforeSize As Single
On Error Resume Next
Application.ScreenUpdating = False
For Each oFootNote In ActiveDocument.Footnotes
With oFootNote
Set myRange = ActiveDocument.Range(.Reference.Start, .Reference.End)
.Range.Copy
With myRange
.Text = "(JZ: )"
BeforeName = .Font.Name
BeforeSize = .Font.Size
myRange.SetRange .Start + 4, .Start + 4
.Paste
.Font.Name = BeforeName
.Font.Size = BeforeSize
End With
End With
Next
Application.ScreenUpdating = True
End Sub
如果需要重新设置标记,可以对“.Text="(J Z:)" ”这一行进行更改;“BeforeName
= .Font.Name”这一行是取得之前的字号大小,“.Font.Name =BeforeName”和
“.Font.Size = BeforeSize”分别用来重新设置字体和字号。检查无误后,单击工具栏上的“保
存”按钮,依次执行“文件→关闭并返回到 Microsoft Word”命令,返回 Word 窗口,然后“运
行”该宏命令,你就可以看到最终结果了。
实例 3:从任意页面编排页码
很多时候,我们在使用 Word 编排文档时,经常需要从文档的某个页面开始显示页码,而不
是从文档的第 1 页显示页码。对于比较熟悉 Word 的朋友来说,这只是个简单的问题:先分节,
然后断开节链接,最后在节中插入重新编号的页码即可。但是对于不经常使用 Word 的朋友来
说,要快速、顺利完成这几个操作并非易事。
其实,我们也可以借助 VBA 宏解决这一问题,而且操作更为简单。打开目标文档,按下
Alt+F11 组合键,打开 Microsoft Visual Basic 编辑器窗口,双击左侧目标文档文
件名下的 ThisDocument,粘贴如下代码:
Sub test()
Dim p As Integer
On Error Resume Next
p = InputBox("请输入起始编排页码的页次")
With Selection
.GoTo What:=wdGoToPage, Count:=p
.InsertBreak Type:=wdSectionBreakContinuous
.Sections(1).Footers(1).LinkToPrevious = False
With .Sections(1).Footers(1).PageNumbers
.RestartNumberingAtSection = True
.StartingNumber = 1
.Add PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True
End With
End With
End Sub
检查无误之
后,按下
Ctrl+S 组合
键执行保存操
作,依次执行“文件→关闭并返回到 Microsoft Word”命令,然后按 F5 键运行 VBA 宏,按照
提示输入起始编码页码的数字,例如“3”,确认之后关闭对话框。
实例 4:将多页文档分解成单页文档
由于工作的需要,现在要求将多页的 Word 文档按照每个页面单独存储为 1 个 Word 文档,除
了枯燥的剪切、粘贴之外,也可以利用 V B A 宏解决这一困难。首先请打开相应的多页 Word
文档,打开 Microsoft Visual Basic 编辑器窗口,在右侧窗格中插入一个新的空白模块,手
工粘贴如下代码:
Sub test()
myPath =
剩余25页未读,继续阅读
资源评论
- zwzqqq2017-08-18非常好,可以学习
MeThee
- 粉丝: 4
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功