为实现统一汇报格式和统一存档,学院要对某专业的几十份Word论文电子文档统一修改正文的字号、行距。如何实现?
按照传统的方法,我们只能一一打开Word文档,按规定的格式对标题和段落进行格式化处理。这样做显然效率太低。如果使用VBA录制宏,给Word加入多文件处理相关的代码,便可实现对同一目录中的Word文件进行自动整理。本文以Word 2010为例。
一、录制格式替换的宏
1. 打开Word程序,按Ctrl+H,调出“查找和替换”对话框,点击“更多”,勾选“使用通配符”;
2. 在“查找内容”中输入*(意思为任何内容),点击“格式”,选“样式”,在“查找样式”中选“正文”(图1);
3. 在“替换为”中输入^&(意思为查找到的内容),点击“格式”,选“字体”,在此设置新的字号,如5号字(图2);
4. 点击“格式”,选“段落”,设置好新的行距,例如1.5倍行距(图3);
5. 不要关闭对话框,点击Word主窗口中的“视图”选项卡,点“宏”按钮下的三角形按钮,选“录制宏”,点击“确定”(图4);
6. 点击“查找和替换”对话框中的“全部替换”,点击“确定”;
7. 点“宏”按钮下的三角形按钮,选“停止录制”。
二、加入多文件处理
1. 点“宏”按钮,选择刚录制的宏(如宏1),点击“编辑”;
2. 在第一行“Sub 宏1()”后,加入代码如下:
Application.ScreenUpdating = False
Dim myPas As String, myPath As String, i As Integer, myDoc As Document
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "选择目标文件夹"
If .Show = -1 Then
myPath = .SelectedItems(1)
Else
Exit Sub
End If
End With
myPas = InputBox("请输入打开密码:")
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFolder = fso.GetFolder(myPath)
Dim oSubFolder, oFile
For Each oFile In oFolder.Files
Set myDoc = Documents.Open(FileName:=oFile.Path, Passworddocument:=myPas)
3. 在最后一行End Sub前加入代码如下:
myDoc.Save
myDoc.Close
Set myDoc = Nothing
Next
Application.ScreenUpdating = True
三、运行程序
按F5键,运行程序,选择Word文件所在文件夹,点击“确定”,若没有打开密码,就直接点击“确定”。
(注:使用时,不能打开要整理的文件)。