可试试运行如下过程 Sub test() '批量提取指定目录中所有doc文档中的图片 Dim odoc As Document, ndoc As String, odir1 As String, odir2 As String Dim temp1 As String, temp2 As String, ndir As String, njpg As String, i As Integer On Error Resume Next Application.ScreenUpdating = False ChDrive "E" '设置当前驱动器 odir1 = "E:\ee\" '指定doc文档存放位置 odir2 = "E:\eee\" '指定临时文件存放位置 ChDir odir1 '确定搜索doc文档的路径 ndoc = Dir("*.doc") '搜索当前目录中所有doc文档 Do While ndoc <> "" '在指定目录内各doc文档循环操作 Set odoc = Documents.Open(odir1 & ndoc) '如果文档中有嵌入式图形或浮动图形对象,则将文档临时另存为网页文件 If odoc.InlineShapes.Count > 0 Or odoc.Shapes.Count > 0 Then ' odoc.SaveAs FileName:=odoc.Path & "e\" & Left(odoc, Len(odoc) - 4) & ".htm", FileFormat:=wdFormatFilteredHTML odoc.SaveAs FileName:=odir2 & Left(odoc, Len(odoc) - 4) & ".htm", FileFormat:=wdFormatHTML End If temp1 = temp1 & vbTab & odoc.FullName '以字符串记录所有另存的文件名(含路径) odoc.Close False '关闭当前文档 ndoc = Dir() Loop '搜索上述指定"另存为"文件夹中所有以".files"字符串结尾的子文件夹 ndir = Dir(odir2 & "*.files", vbDirectory) Do While ndir <> "" temp2 = temp2 & vbTab & odir2 & ndir '以字符串记录搜索到的所有符合条件的子文件夹名称 ndir = Dir() Loop For i = 1 To UBound(Split(temp2, vbTab)) '依次搜索上述各子文件夹中的JPG图像文件 njpg = Dir(Split(temp2, vbTab)(i) & "\*.jpg") Do While njpg <> "" '将搜索到的图像文件另存于指定文件夹(暂定为原doc文档存放位置) '图像文件命名规则设为:文件名+原自动生成图片的数字编号部分 FileCopy Split(temp2, vbTab)(i) & "\" & njpg, _ odir1 & Replace(Replace(Split(temp2, vbTab)(i), odir2, ""), ".files", "") & "_" & Replace(njpg, "image", "") njpg = Dir() Loop Next i '删除临时另存的文件 For i = 1 To UBound(Split(temp1, vbTab)) Kill Split(temp1, vbTab)(i) Kill Split(temp2, vbTab)(i) & "\*.*" RmDir Split(temp2, vbTab)(i) Next i Application.ScreenUpdating = True End Sub 有个问题尚未解决:将doc文档另存为网页时,原文档中的每张图片对应有2个JPG文件,保存为“筛选过的网页”时,虽可一一对应,但图片像素不高,有待补充。测试版本为word2003。
[此贴子已经被作者于2007-5-23 17:44:57编辑过] |