怎么是用VBA批量提取word文档指定内容到Excel?
2013-01-29 14:08 MrArjun | 分类:办公软件 | 浏览676次
问题比较复杂,我慢慢说:
我现有一百多个word文档,每个文档内有一到两个标签,标签名为aa和bb,我需要把所有标签提取到一个Excel中,现在遇到的问题是:
一,假设d文件夹内三个word文档335、336、337,怎么做到批量读取word,并逐一提取?
二,每个word内标签不一定,有的有aa和bb,有的只有aa或者bb其中一个,怎么做到有就提取,没有就返回“无”?
不知道我的描述是否清楚。我之前问过如何提取word标签,地址为zhidao.baidu/question/520698820?quesup2 oldq=1
大神的代码很好,但不能批量提取,遇到只有一个标签时会报错。希望能有人再做解答,万分感谢。
Sub abc()
Dim App, WrdDoc, MyPath, MyFile, BM, Str
Mypath = "文件实际路径\*.doc" '请修改实际储存路径!
Set App = CreateObject("Word.Application") '用Set关键字创建Word应用成序对象!
MyFile = Dir(Mypath) ' 获得第一个WORD文档
do while MyFile "" ' 遍历Mypath下面的所有WORD文档
App.Visible = True
Set WrdDoc = App.documents.Open(MyFile) '打开这个Word文件!
for each BM in WrdDoc.Bookmarks ' 遍历文档中的所有书签
Str = BM.Range ' 读取书签内容
next BM
WrdDoc.Close ' 关闭文件
MyFile = Dir ' 下一个WORD文档
Loop
Set App = Nothing
End Sub
为什么会在“Set WrdDoc = App.documents.Open(MyFile) ”这一步报错,提示找不到该文件呀?在本地窗口看到已经找到文档了。
抱歉,没有实际调试代码
DIR函数只返回文件名,不包含完整路径
所以请重新修改为以下代码:
Sub abc()
Dim App, WrdDoc, MyPath, MyFile, BM, Str
Mypath = "文件实际路径" '请修改实际储存路径!
Set App = CreateObject("Word.Application") '用Set关键字创建Word应用成序对象!
MyFile = Dir(Mypath "\*.doc") ' 获得第一个WORD文档
do while MyFile "" ' 遍历Mypath下面的所有WORD文档
App.Visible = True
Set WrdDoc = App.documents.Open(Mypath "\" MyFile) '打开这个Word文件!
for each BM in WrdDoc.Bookmarks ' 遍历文档中的所有书签
Str = BM.Range ' 读取书签内容
next BM
WrdDoc.Close ' 关闭文件
MyFile = Dir ' 下一个WORD文档
Loop
Set App = Nothing
End Sub
这次在“MyFile = Dir(Mypath "\*.doc")”报错了,提示文件名或文件号错误。
我测试过,没有问题啊?
请看一下你实际的Mypath,结尾不能有"\",否则在DIR中和"\*.doc"合并就成了"...\\*.doc"
提问者评价
不好意思,最后是我自己的问题。非常感谢你!