用VBA宏提高Word操作效率文档格式.docx

上传人:b****1 文档编号:876384 上传时间:2023-04-29 格式:DOCX 页数:27 大小:848.22KB
下载 相关 举报
用VBA宏提高Word操作效率文档格式.docx_第1页
第1页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第2页
第2页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第3页
第3页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第4页
第4页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第5页
第5页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第6页
第6页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第7页
第7页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第8页
第8页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第9页
第9页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第10页
第10页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第11页
第11页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第12页
第12页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第13页
第13页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第14页
第14页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第15页
第15页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第16页
第16页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第17页
第17页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第18页
第18页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第19页
第19页 / 共27页
用VBA宏提高Word操作效率文档格式.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

用VBA宏提高Word操作效率文档格式.docx

《用VBA宏提高Word操作效率文档格式.docx》由会员分享,可在线阅读,更多相关《用VBA宏提高Word操作效率文档格式.docx(27页珍藏版)》请在冰点文库上搜索。

用VBA宏提高Word操作效率文档格式.docx

增加内容"

&

n1&

"

处共"

c1&

字;

删除内容"

n2&

c2&

字。

"

EndSub

上述代码主要是基于Word2007对于Words集合对象的判断进行统计,宏名称“test”可以任意取;

“[一-龥]”表示所有中文汉字。

代码检查无误之后,单击工具栏上的“保存”按钮执行保存操作,返回Word窗口之后,按下Alt+F8组合键,打开“宏”对话框,选择列表框中的“test”,单击右侧的“运行”按钮,很快会看到准确的结果,包括增加和删除共几种、多少字,这样就清晰多了。

实例2:

快速提取脚注内容

同事传过来一个文件,要求将脚注的内容提取出来,文档如下图所示,其中作了几处脚注,现在要求将脚注的内容提取到正文中相应脚注编号的位置,在这里添加标记(JZ:

*),此处的“*”指脚注的内容(不含序号,如此文①和②),同时删除原来的编号。

如果通过手工的方法进行操作,既麻烦也不方便,其实这里可以利用VBA代码解决这一问题,代码如下:

DimoFootNoteAsFootnote,myRangeAsRange

DimBeforeNameAsString,BeforeSizeAsSingle

OnErrorResumeNext

Application.ScreenUpdating=False

ForEachoFootNoteInActiveDocument.Footnotes

WithoFootNote

SetmyRange=ActiveDocument.Range(.Reference.Start,.Reference.End)

.Range.Copy

WithmyRange

.Text="

(JZ:

)"

BeforeName=.Font.Name

BeforeSize=.Font.Size

myRange.SetRange.Start+4,.Start+4

.Paste

.Font.Name=BeforeName

.Font.Size=BeforeSize

EndWith

Application.ScreenUpdating=True

如果需要重新设置标记,可以对“.Text="

(JZ:

)"

”这一行进行更改;

“BeforeName=.Font.Name”这一行是取得之前的字号大小,“.Font.Name=BeforeName”和“.Font.Size=BeforeSize”分别用来重新设置字体和字号。

检查无误后,单击工具栏上的“保存”按钮,依次执行“文件→关闭并返回到MicrosoftWord”命令,返回Word窗口,然后“运行”该宏命令,你就可以看到最终结果了。

实例3:

从任意页面编排页码

很多时候,我们在使用Word编排文档时,经常需要从文档的某个页面开始显示页码,而不是从文档的第1页显示页码。

对于比较熟悉Word的朋友来说,这只是个简单的问题:

先分节,然后断开节链接,最后在节中插入重新编号的页码即可。

但是对于不经常使用Word的朋友来说,要快速、顺利完成这几个操作并非易事。

其实,我们也可以借助VBA宏解决这一问题,而且操作更为简单。

打开目标文档,按下Alt+F11组合键,打开MicrosoftVisualBasic编辑器窗口,双击左侧目标文档文

件名下的ThisDocument,粘贴如下代码:

DimpAsInteger

p=InputBox("

请输入起始编排页码的页次"

WithSelection

.GoToWhat:

=wdGoToPage,Count:

=p

.InsertBreakType:

=wdSectionBreakContinuous

.Sections

(1).Footers

(1).LinkToPrevious=False

With.Sections

(1).Footers

(1).PageNumbers

.RestartNumberingAtSection=True

.StartingNumber=1

.AddPageNumberAlignment:

=wdAlignPageNumberCenter,FirstPage:

=True

检查无误之后,按下Ctrl+S组合键执行保存操作,依次执行“文件→关闭并返回到MicrosoftWord”命令,然后按F5键运行VBA宏,按照提示输入起始编码页码的数字,例如“3”,确认之后关闭对话框。

实例4:

将多页文档分解成单页文档

由于工作的需要,现在要求将多页的Word文档按照每个页面单独存储为1个Word文档,除了枯燥的剪切、粘贴之外,也可以利用VBA宏解决这一困难。

首先请打开相应的多页Word文档,打开MicrosoftVisualBasic编辑器窗口,在右侧窗格中插入一个新的空白模块,手工粘贴如下代码:

myPath="

H:

\temp\"

Selection.HomeKeyUnit:

=wdStory

SetmyRange=Selection.Range

curpage=0

Do

prepage=curpage

pagenum=pagenum+1

SetmyRange=myRange.GoToNext(What:

=wdGoToPage)

curpage=myRange.Start

endpage=myRange.Previous.Start

Ifcurpage=prepageThen_

endpage=ActiveDocument.Content.End

ActiveDocument.Range(prepage,endpage).Copy

WithDocuments.Add

.Content.Paste

.SaveAsmyPath&

Page"

pagenum&

.doc"

.Close

Ifcurpage=prepageThenExitDo

Loop

上述代码中的“H:

\temp\”表示存储单页文档的位置,请根据实际情况而定,检查无误之后保存代码并返回Word界面。

按下Alt+F8组合键,选中列表框中的“test”宏,单击右侧的“运行”按钮,稍等片刻即可将当前的多页Word文档按照页面快速分割存储为一个一个的Word文档,是不是很方便?

需要指出的是,如果没有选择内容,那么VBA宏会针对当前文档的所有页面进行自动分割,如果选定页面,那么就只会针对当前选定的页面进行分割。

实例5:

快速更新参考文献编号

朋友小张最近正在做毕业设计,毕业论文中涉及参考文献的标注,现在需要增加2个参考文献,但由于小张是将正文和参考文献分别放在两个文档中,而且是将参考文献手工复制到正文的末尾,也就是说没有使用正规的操作方式,这样就会导致编号无法更新。

更麻烦的是,这里并不能使用“查找和替换”的功能,但如果针对这些逐个手工替换,显然既麻烦而且也容易出错。

其实,这里可以使用VBA宏代码实现这一要求,粘贴实例5代码(限于篇幅代码请访问rd窗口,按下Alt+F8组合键,打开“宏”对话框,选中列表框中的“Test”宏,单击右侧的“运行”按钮即可。

当然,建议以后还是通过“插入→尾注”的方法进行操作,这样可以省去不少麻烦事。

实例6:

快转大纲级别并自动提取目录

同事转过来一份发言稿,这里采用了中文文稿中习惯的大纲级别,这样自然也就无法直接提取目录,如下图所示,这里需要将文档中以“一、”、“1.”、“

(1)”开头的段落设置相应级别的标题样式,也就是说分别将其转换为1、2、3级,不过如果纯粹依靠手工操作的话,既繁琐而且也容易出错。

有没有简单一些的方法呢?

借助VBA宏代码可以解决这一问题,操作也并不复杂,具体步骤如下:

第一步:

打开MicrosoftVisualBasic编辑器窗口,在右侧窗格插入一个空白模块,粘贴实例6代码(访问

第二步:

转换大纲级别上述代码先将所有手动换行符替换为段落标记,并自动删除段前、段后的空格,再将“一、”设置为一级标题,将“1.”设置为二级标题,将“

(1)”设置为三级标题。

检查无误之后,单击工具栏上的“保存”按钮执行保存操作,依次执行“文件→关闭并返回到MicrosoftWord”,返回Word窗口之后,按下Alt+F8组合键,打开“宏”对话框,选中列表框中的“test”宏,单击右侧的“运行”按钮,稍等片刻,即可完成大纲列表的自动转换。

第三步:

提取目录按下Ctrl+Home组合键,在文档首页插入一个空白页面,这个空白页面主要是用来插入目录。

切换到“引用”选项卡,单击“目录”功能组中的“目录”按钮,从下拉菜单中选择“插入目录”,此时会弹出“目录”对话框,直接确认之后即可自动提取目录。

实例7:

完成虚框→实框的批量转换

不知是什么原因,某个Word文档中的实框变成了虚框,看起来很不顺眼。

最简单的方法是选中整个表格,打开“表格属性”对话框,单击“边框和底纹”按钮,打开“边框和底纹”对话框,在这里可以按照自己的需要设置虚框或实框,但如果文档中类似的虚框表格数量极多⋯⋯

可以通过VBA代码解决这一问题,输入如下代码:

Subexample()

WithApplication.FileSearch

.LookIn="

h:

\Downloads\"

.FileType=msoFileTypeWordDocuments

If.Execute>

0Then

Fori=1To.FoundFiles.Count

SetmyDoc=Documents.Open(FileName:

=.FoundFiles(i),Visible:

=False)

ForEachtInmyDoc.Tables

t.Style="

网格型"

myDoc.CloseTrue

上述代码中的“example”是宏的名称,当然你可以任意命名,“.LookIn="

”请更改为实际的路径。

检查无误之后,单击工具栏上的“保存”按钮执行保存操作,依次执行“文件→关闭并返回到MicrosoftWord”,返回Word窗口之后,按下Alt+F8组合键,此时会弹出“宏”对话框,选中列表框中的“example”宏,单击右侧的“运行”按钮就可以了。

实例8:

批量实现缩放打印

在实际工作中,由于纸张的原因,我们往往需要利用Word的“按纸张大小缩放”功能,在不更改页面设置的情况下,实现文档的完美打印。

但如果需要对某个文件夹下的多个Word文档进行缩放打印,难道只能逐个进行?

其实,我们可以利用VBA宏代码批量实现缩放打印,操作也并不复杂。

以Word2007为例,考虑将A4纸面的文档缩放为16开纸进行打印,可以按照如下步骤进行操作:

按下Alt+F11组合键,打开MicrosoftVisualBasic编辑器窗口,依次执行“插入→模块”,在右侧窗格中插入一个空白模块,粘贴如下代码:

\Downloads\temp5\"

Fori=1To.FoundFiles.Count

Documents.OpenFileName:

=.FoundFiles(i)

ActiveDocument.PrintOutPrintZoomPaperWidth:

=10433,

PrintZoomPaperHeight:

=14742

ActiveDocument.CloseFalse

Nexti

需要指出的是,上述代码中的名称“test”可以任意定制,“.LookIn="

\Downloads\temp5\"

”的文件夹路径请根据实际情况进行设置。

值得注意的是“PrintZoomPaperWidth”和“PrintZoomPaperHeight”后面的数字,前者表示Word将打印页面缩放到的宽度,后者表示Word将打印页面缩放到的高度,两者均以缇(Twip)为单位,20缇为1磅,72磅为1英寸。

16开纸张的宽度为521.65磅,高度为737.1磅,换算成缇正好分别是10433缇、14742缇。

如果需要缩放为其他的纸张大小,可以按照这一方法进行换算,当然请事先打开“选项→常规”对话框,将度量单位由默认的“厘米”设置为“磅”。

检查无误之后,单击工具栏上的“保存”按钮执行保存操作,接下来依次执行“文件→关闭并返回到MicrosoftWord”,返回Word窗口之后,按下Alt+F8组合键,打开“宏”对话框,选择列表框中的“test”宏,单击右侧的“运行”按钮,然后的事情嘛,耐心等待片刻即可完成文档的批量缩放打印。

实例9:

判断图片属性

很多时候,我们都需要在Word文档中插入一些图片,默认设置下都是会以嵌入型的方式插入,但可能会被某些用户更改此默认设置,可以右击图片打开“设置图片格式”对话框,在这里可以查看到该图片的详细信息,但显然是不太方便,而且也不直观。

其实,我们可以借助VBA宏代码快速判断图片属性,方法也并不复杂,具体代码如实例9(访问

运行宏之后,很快就可以显示图所示的结果,这里可以查看到图片的插入模式、图片的宽和高等信息。

如果需要判断图片究竟是衬于文字下方,或者是浮于文字上方,可以在上述代码的“EndSub”前面添加下述内容,

ActiveDocument.Shapes

(1).Select

WithDialogs(wdDialogFormatDrawingObject)

MsgBoxCStr(.Wrap)

EndWith

运行宏之后会在弹出上述对话框的同时,接下来弹出上图所示的对话框,这里的“5”表示衬于文字下方,如果显示为“6”则表示浮于文字上方。

实例10:

利用文本文件和VBA完成批量替换

在实际工作中,我们经常需要对Word文档中的某些字符串进行替换,如果每次都借助“查找和替换→替换”进行操作的话,既麻烦而且也容易出错。

当然,我们可以通过VBA宏完成批量替换,但如果每次替换的内容不一样,就需要更改源代码,确实也是比较繁琐。

其实,我们可以针对经常需要替换的字符串创建相应的文本文件,然后在VBA宏代码中调用这个文本文件,如果替换的内容发生变化,我们就不需要重写VBA宏代码,而是只需要针对这个文本文件进行更改,无疑是方便许多。

具体步骤如下:

针对下图所示的文档,打开记事本,写入需要替换的原字符串和新字符串,格式如下所示,完成之后创建一个名为k:

\Documents\test.txt的文本文件:

图象→图像

帐户→账户

AAA→

ChrW(2229)→∩

沙洲→张家港市上述文本中,“→”前面的内容表示需要替换的原字符串,“→”后面的内容表示替换之后的新字符串;

“AAA→”后面的内容为空,表示删除“AAA”;

“ChrW(2229)”的内容比较有趣,“ChrW”表示返回该代码所对应的Unicode字符,字符为英文或汉字,这里自然是返回“∩”这个符号,相关符号的Unicode编码可以在Word的“符号”窗口中查阅。

按下Alt+F11组合键,打开MicrosoftVisualBasic编辑器窗口,依次执行“插入→模块”,在右侧窗格中插入一个空白的模块,手工写入实例10代码。

单击工具栏上的“保存”按钮,将刚才写入的宏代码保存下来,按下Alt+Q组合键返回Word窗口之后,按下Alt+F8组合键,打开“宏”对话框,选中列表框中的“Replace”宏,单击右侧的“运行”按钮。

基于上述原理,以后如果替换的内容发生变化,我们只需要针对test.txt文件进行编辑,而不需要更改VBA宏代码,这样就方便多了。

实例11:

对文档内容进行顺序排列

手头有一个文档,其中有许多格式相似的消息,现在希望对这些内容按照日期进行重新整理,也就是说将日期在前面的消息也放在前面,由于实际文档的内容相当之多,如果通过手工的方法进行操作,工作量可想而知。

有没有简单一些的批量处理方法呢?

利用VBA可以实现这一要求,具体代码如下:

Submacro1()

Dims()AsString,tempAsString,iAsLong

VBAs=Split(ActiveDocument.Content,Chr(13)&

Chr(13))

Fori=0ToUBound(s)\2

temp=s(i)

s(i)=s(UBound(s)-i)

s(UBound(s)-i)=temp

Documents.Add

ActiveDocument.Content.Text=Join(s,Chr(13)&

运行宏,稍等片刻,Word会在一个新文档窗口中给出经过整理之后的内容,这里可以清楚的看到文档中的消息已经按照我们的要求进行排列。

实例12:

替换Word文档插图的超链接

最近,从网络上抓取了一份考试卷,其中有许多插图,按住Ctrl键单击之后可以访问所设定的链接。

不过,这里所链接到的网页看起来似乎很有问题,现在希望将这些链接地址进行重新设置,但如果逐一右击打开“编辑超链接”对话框进行修改,显然是相当的麻烦。

其实,我们可以利用VBA完成这个批量修改超链接的任务。

编辑VBA代码

经过检查之后发现,这份考试卷中的插图的版式并不相同,其中有一些图片采取了默认的“嵌入型”环绕方式,因此需要首先将其中的嵌入型图片更改为其他的环绕方式。

虽然可以逐一手工更改,但显然效率不高。

打开MicrosoftVisualBasic编辑器窗口,输入实例12代码(访问

选择图片版式

单击工具栏上的“保存”按钮,然后执行“文件→关闭并返回到MicrosoftWord”,按下Alt+F8组合键,单击右侧的“运行”按钮,此时会弹出一个对话框,单击“是(Y)”按钮,随后会看到一个对话框,根据自己的需要输入相应的数字,确认之后即可将文档中的图片更改为所对应的版式。

编辑替换超链接的VBA代码

仍然打开MicrosoftVisualBasic编辑器窗口,依次执行“插入→模块”,在右侧窗格中手工插入一个新的空白模块,粘贴如下代码:

Subtext()

n=0

ForEachsInActiveDocument.Shapes

s.Select

ActiveDocument.Hyperlinks.AddAnchor:

=Selection.ShapeRange,_

Address:

="

n=n+1

共替换"

n&

个图片!

上述代码中的“text”名称和“”的内容可以根据需要任意更改。

第四步:

替换超链接

检查无误之后,按下Ctrl+S组合键保存代码,接下来依次执行“文件→关闭并返回到MicrosoftWord”,返回Word窗口之后,按下Alt+F8组合键,选中列表框中的“text”宏,单击右侧的“运行”按钮即可看到效果。

至于页眉和末尾的超链接内容,直接手工替换即可。

实例13:

快速实现括号的右对齐

同事小秦出了一份试卷,其中有许多是属于客观题的选择题,但由于输入的问题,相应的括号都跟在文字的后面,现在她希望这些括号能够在页面的最右边对齐,但如果逐题敲入空格键实现右对齐,既麻烦而且也不便于后期的调整,有没有更简单一些的方法呢?

利用VBA宏代码来实现这一任务,具体代码如下:

Sub括号右对齐()

DimmyRangeAs

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2