根据工作要求,有时候会安排发放一些基本信息调查表,内容各不相同,等收回来的时候,一个一个文档进行重新录入,工作量十分巨大。有没有好的办法能够自动将数据统一录入到一起呢?Office的最大优势就是联动,尤其从2013版本开始,PPT、Word、Excel里功能互相融合的趋势更加明显。今天小编就分享一个通过Word文件收集信息,使用Excel自动摘录数据的方法。

首先按照正常的工作要求制作Word信息收集表,制作完毕后修改待填信息框,切换到开发模式选项卡,点击“Aa”格式文本内容控件(如果没有,点击文件—选项—自定义功能区,右侧勾选“开发工具”)。

接下来单击信息框然后在开发工具中点选“设计模式”。

弹出对话框输入标题,这就是信息框的信息提示文字,要是有需求,还可以修改边框颜色、文本样式等等。

每个信息框都做了相应的修改后,点击开发模式中的“限制编辑”,在Word右侧栏中,勾选“限制对选定的样式设置格式”和“仅允许在文档中进行此类型的修改”并选中“填写窗体”。


Word部分就设置完毕了,这时候可以将文件发送给被收集信息者,待返回后,开始用Excel批量自动摘录Word填表信息。打开Excel,同样是切换到开发工具选项卡,点选最左侧的“Visual Basic”。

双击Sheet1,填写宏代码(登录PC版微信,订阅号中找到办公便签,点击查看历史消息找到本文再进行复制):

Option base 1
Sub readDoc()
Dim WordApp As Word.Application
Set WordApp = CreateObject("Word.Application")
Dim WordDoc As Word.document
Dim diag1 As FileDialog
Dim return1 As String
Dim filePathArray()
Set diag1 = Application.FileDialog(msoFileDialogFilePicker)
'定义文件选择对话框
With diag1
.AllowMultiSelect = True '设置文件选择对话框能够选择多个文件
return1 = .Show '打开文件选择对话框
n = .SelectedItems.Count '将选中文件个数保存至变量n
If return1 = -1 Then
'如选中文件(retun1=-1)则将选中的文件路径保存到filePathArray数组
ReDim filePathArray(n)
For i = 1 To n
filePathArray(i) = .SelectedItems(i)
Next
Else '如果未选中任何文件则提示
MsgBox "未选择任何文件", vbExclamation
End If
End With
For j = 1 To n
Set WordDoc = WordApp.documents.Open(filePathArray(j))
'根据filePathArray数组中的路径逐个打开Word文件
Dim ccSet
Set ccSet = WordDoc.ContentControls
'将ccSet设为打开文档的内容控件集合
i = 1
For Each cc In ccSet '遍历所有内容控件
Application.ActiveSheet.Cells(j, i) = cc.Range.Text '将内容控件内容保存至单元格
i = i + 1
Next
WordDoc.Close '关闭当前Word文档
Next
WordApp.Quit
End Sub
注意,抄录好宏代码后,不要着急关闭,点选当前Visual Basic界面上方工具栏的“工具—引用”,在“可使用的引用”中找到“Microsoft Word 16.0 Object Library”并勾选确定(Word2013中名称略有不同)。


回到Excel主界面,还是在开发工具选项卡中,点击“宏”,选中刚才编辑的这个宏命令,单击“运行”,这时Excel会自动弹出文件选择框,找到要摘录信息的Word文档点选打开,Excel就可以开始自动摘录信息了。这样一来,数据摘录的工作就完全依靠电脑自动完成了,大大节省了工作时间,也避免了手工摘录的出错几率。

