如何用vba把多个word文档的内容提取到excel中?

您所在的位置:网站首页 从word提取信息到excel 如何用vba把多个word文档的内容提取到excel中?

如何用vba把多个word文档的内容提取到excel中?

2024-05-26 12:39| 来源: 网络整理| 查看: 265

如何用vba把多个word文档的内容提取到excel中? 2018年3月31日 作者:水星Excel 16,465 次浏览 1评论

word和excel之间的数据转移是一个经常遇到的情形。

一般的提取word文档的内容到excel的步骤如下:

1.在excel中编写vba代码,创建word应用程序对象

2.打开word文档(此步骤可以设置固定的文件路径,也可以设置自定义选择文件路径)

3.读取word文档中的内容到变量

4.如果还涉及到word文档内容的改写,还需要把变量的值回写到word文档中

5.将变量的值写入到excel中

6.保存word文档

7.关闭word文档

8.如果不止一个word文档,则循环步骤2到步骤7

9.释放步骤1中创建的word应用程序对象

10.在excel中处理提取的内容

11.处理完毕

基于以上的步骤,我们可以写出如下的通用的提取word内容到excel表格中的代码:

Dim oWord As Object Sub QQ1722187970() Set oWord = VBA.CreateObject("word.application") oWord.Visible = True Dim sPath As String '获取文件或者文件夹的路径 sPath = GetPath() If Len(sPath) Then Call EnuAllFiles(sPath) End If '释放word应用程序对象 Set oWord = Nothing MsgBox "处理完成!!!" End Sub Function GetPath() As String '声明一个FileDialog对象变量 Dim oFD As FileDialog ' '创建一个选择文件对话框 ' Set oFD = Application.FileDialog(msoFileDialogFilePicker) '创建一个选择文件夹对话框 Set oFD = Application.FileDialog(msoFileDialogFolderPicker) '声明一个变量用来存储选择的文件名 Dim vrtSelectedItem As Variant With oFD '允许选择多个文件 .AllowMultiSelect = True '使用Show方法显示对话框,如果单击了确定按钮则返回-1。 If .Show = -1 Then '遍历所有选择的文件 For Each vrtSelectedItem In .SelectedItems '获取所有选择的文件的完整路径,用于各种操作 GetPath = vrtSelectedItem Next '如果单击了取消按钮则返回0 Else End If End With '释放对象变量 Set oFD = Nothing End Function Sub EnuAllFiles(ByVal sPath As String, Optional bEnuSub As Boolean = False) Dim oWK As Worksheet Set oWK = Excel.Worksheets("Sheet1") With oWK Dim arr '设置列标题 arr = Array("姓名", "出生年月", "年龄", "学历", "现任职务") .Cells.Clear iCol = UBound(arr) + 1 .Range("a1").Resize(1, iCol) = arr '从第2行开始填充提取的内容 i = 2 End With '定义文件系统对象 Dim oFso As Object Set oFso = CreateObject("Scripting.FileSystemObject") '定义文件夹对象 Dim oFolder As Object Set oFolder = oFso.GetFolder(sPath) '定义文件对象 Dim oFile As Object '如果指定的文件夹含有文件 If oFolder.Files.Count Then For Each oFile In oFolder.Files With oFile '输出文件所在的盘符 Dim sDrive As String sDrive = .Drive '输出文件的类型 Dim sType As String sType = .Type '输出含后缀名的文件名称 Dim sName As String sName = .Name '输出含文件名的完整路径 Dim sFilePath As String sFilePath = .Path '如果文件是Word文件且不是隐藏文件 If sType Like "*ord*" And .Attributes 2 Then '以下是对每个文件进行处理的代码 '********************************* Debug.Print sFilePath '打开word文档 Set oDoc = oWord.Documents.Open(sFilePath) With oDoc '提取代码***********************' '保存word文档 .Save '关闭word文档 .Close '接着下一个word文档 i = i + 1 End With Else End If End With Next '如果指定的文件夹不含有文件 Else End If '如果要遍历子文件夹 If bEnuSub = True Then '定义子文件夹集合对象 Dim oSubFolders As Object Set oSubFolders = oFolder.SubFolders If oSubFolders.Count > 0 Then For Each oTempFolder In oSubFolders sTempPath = oTempFolder.Path Call EnuAllFiles(sTempPath, True) Next End If Set oSubFolders = Nothing End If Set oFile = Nothing Set oFolder = Nothing Set oFso = Nothing End Sub 其它相关文章推荐:如何用vba查找提取多个word文档中的关键字并创建超链接?如何用vba将同一文件下的所有03版本的word转换为最新版本?如何用vba遍历word文档中的文本框?如何用vba在空白的word文档中逐段落的添加文本内容?如何用vba获取word中所有的标题所在的页码?如何用vba获得word range对象所在的行的文本内容? 分类 :  VBA , WORD VBA 标签 :  FileSystemObject , word转excel , 子文件夹 , 遍历        

声明: 本站文章均属原创,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则视为侵权。如果想要每天都收到本站的技术文章推送,可以微信搜索公众号:水星Excel或者Excel_Office关注。其它事宜请加QQ:1722187970 或微信号:xycgenius 联系。 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3