有时需要将doc/docx格式的文档批量转换为html格式的网页文件,可以使用以下VBA脚本执行批量转换的操作,需要在安装了宏功能的Word中执行。

以下脚本会搜索指定目录中的doc文档,并逐个进行处理,执行以下操作:

  • 将doc文档的标题属性修改为文件名,以使生成的网页文件显示的标题为文件名;
  • 对图片大小进行统一按比例缩放,防止图片过大影响展示;
  • 将生成的html文件保存在指定的目录中。
Private Declare Function GetTickCount Lib "kernel32" () As Long'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private num_file As Integer
Private FileType_htm As String
Private FileType_doc As String
Private path_src_start As String '记录源路径
Private path_des_start As String '记录目标路径
Private LogFile As String '日志文件路径Private Sub CommandButton1_Click()'从指定目录开始处理,下面的路径最后不带“\”path_src_start = "D:\word" '保存.doc文件的目录path_des_start = path_src_start '保存需要生成.htm文件的目录'开始执行start
End SubSub start()num_file = 0FileType_htm = ".htm"FileType_doc = ".doc"Dim time_start, time_end, second_spend, minute_spend, minute_tail As LongMsgBox ("需要处理的目录路径:" & path_src_start & vbCrLf _& "保存处理结果的目录路径:" & path_des_start) 'vbCrLf为回车换行'记录开始时间time_start = GetTickCount()'开始搜索LogFile = Chr(34) & path_des_start & "\转换记录.txt" & Chr(34) 'chr(34)",echo >>时,若文件路径中存在空格,需要用""包含Open path_des_start & "\转换记录.txt" For Output As #1search path_src_start, path_des_start'完成搜索time_end = GetTickCount()writeLog ("处理文件数量:" & num_file)'获得花费时间time_spend = time_end - time_startsecond_spend = time_spend \ 1000minute_spend = second_spend \ 60minute_tail = second_spend - minute_spend * 60output = "处理用时:" & minute_spend & "分" & minute_tail & "秒"writeLog (output)Close #1MsgBox ("处理完毕" & vbCrLf _& "处理文件数量:" & num_file & vbCrLf _& output)
End Sub'搜索文件,path_src为源文件路径,path_des为需要保存.doc文件的路径
Sub search(path_src, path_des)Dim fs, fold, fls, flSet fs = CreateObject("Scripting.FileSystemObject")Set fold = fs.getfolder(path_src)'首先对当前目录的指定文件进行处理If fold.Files.Count <> 0 ThenSet fls = fold.FilesFor Each fl In fls'判断是否为.htm文件,需判断文件名中是否出现了指定的后缀,且处于最后(防止.html文件匹配.htm)judge = InStrRev(fl.Name, FileType_doc)If judge <> 0 And judge + Len(FileType_doc) - 1 = Len(fl.Name) Then'处理.doc文件operDocFile path_src, fl.Name, path_srcEnd IfNextEnd If'再对子目录进行递归If fold.SubFolders.Count <> 0 ThenSet fls = fold.SubFoldersFor Each fl In flssearch path_src & "\" & fl.Name, path_des & "\" & fl.NameNextEnd If
End Sub'处理.doc文件,path_src为.doc文件所在目录路径,FileName为.doc文件名,path_des为.htm文件需要保存的目录路径
Sub operDocFile(path_src, FileName, path_des)filePath_doc = path_src & "\" & FileNameFileName_Only = Left(FileName, InStrRev(FileName, ".") - 1) '去掉后缀的文件名,开头没有'\'filePath_htm = path_des & "\" & FileName_Only & FileType_htm '对应.htm文件的路径'判断对应的.htm是否已生成If Dir(filePath_htm) = "" ThenwriteLog ("--开始处理文件:" & filePath_doc)Documents.Open (filePath_doc) '打开答案.mht文件modifyTitle (FileName_Only) '修改.doc文档的标题属性为文件名operPics '修改图片大小saveDoc2Htm (filePath_htm) '保存为.htm文件ActiveDocument.Close '关闭打开的文件writeLog ("--处理文件成功:" & filePath_htm)num_file = num_file + 1 '已处理文件数加1End If
End Sub'将.doc文件通过word保存为.htm文件,destPath为.htm文件完整路径
Sub saveDoc2Htm(destPath)'另存为.htm文件ActiveDocument.SaveAs FileName:=destPath, FileFormat:= _wdFormatFilteredHTML, LockComments:=False, Password:="", AddToRecentFiles:= _False, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _False, SaveNativePictureFormat:=False, SaveFormsData:=False, _SaveAsAOCELetter:=False
End Sub'修改.doc文档的标题属性
Sub modifyTitle(title)ActiveDocument.BuiltInDocumentProperties("Title") = title '修改.doc文档标题属性ActiveDocument.Save '保存
End Sub'对图片进行处理
Sub operPics()Selection.WholeStory '全选pic_num = Selection.InlineShapes.Count '获得图片个数For i = 1 To pic_num'对图片大小进行处理operPicSize iNext i'不保存原始doc-ActiveDocument.Save
End Sub'对图片大小进行处理,将未完全显示出来的图片放大至固定宽
Sub operPicSize(currentPic)fixed_width = 800 '设置固定宽度fixed_width_min = 500 '设置固定宽度的最小值minus_width = 50 '设置每次减少的宽度'计算图片原始宽度pic_width_raw = (Selection.InlineShapes(currentPic).Width * 100) / Selection.InlineShapes(currentPic).ScaleWidthwriteLog ("图片显示比例:" & Selection.InlineShapes(currentPic).ScaleWidth & " 图片显示宽度:" & Selection.InlineShapes(currentPic).Width & " 图片原始宽度:" & pic_width_raw)If Selection.InlineShapes(currentPic).ScaleWidth < 100# Then'图片显示比例小于100%,需要设置固定宽度'尝试从800500,与图片显示宽度进行比较,try = 0Dofixed_width_current = fixed_width - minus_width * try'循环到最小固定宽度时结束If fixed_width_current < fixed_width_min ThenExit DoEnd Iftry = try + 1If fixed_width_current < pic_width_raw Then'若图片原始宽度比当前尝试的固定宽度大,则使用当前的固定宽度'计算长宽比保持不变的图片新高度height_new = (fixed_width_current / Selection.InlineShapes(currentPic).Width) * Selection.InlineShapes(currentPic).HeightSelection.InlineShapes(currentPic).Width = fixed_width_currentSelection.InlineShapes(currentPic).Height = height_newwriteLog ("修改后图片显示宽度:" & fixed_width_current)Exit DoEnd IfLoopEnd If
End Sub'写日志
Sub writeLog(data)Print #1, data
End Sub

word文档批量转换为html格式相关推荐

  1. 如何将多个 Docx 格式 Word 文档批量转为 Doc 格式

    概要:前面我们介绍过常见的 Word 文档有多种格式,比如 Doc.Docx,并且详细介绍了如何批量将多个 Doc 格式的 Word 文档批量转为 Docx 格式文档,相信对大家都有一些的帮助.那 D ...

  2. 关于python:如何将Word文档批量转换为PDF文档

    Q:         我们在实际工作中很容易发现,有些时候我们需要将Word文档转换为PDF文档,如果只是一个文件,我们也只是需要通过Word提供的转换为PDF文档的功能就可以实现了.但是WPS需要收 ...

  3. Word文档怎么转换为PDF格式?介绍两种方式

    word应该是我们平日里接触最多的文件格式了,浏览编辑起来都很方便,但打印出来的格式却时不时就出错.这时可以将文档转成格式更稳定的PDF文件,那Word怎么转PDF呢?下面就给大家介绍两种方式,一分钟 ...

  4. python实现word文档批量转成自定义格式的excel文档

    python实现word转成自定义格式的excel文档(解决思路和代码) 支持按照文件夹去批量处理,也可以单独一个文件进行处理,并且可以自定义标识符 最近在开发一个答题类的小程序,到了录入试题进行测试 ...

  5. Python动态修改Word文档内容,保留格式样式,并批量生成PDF

    Python动态修改Word文档内容,保留格式样式,并批量生成PDF 前言 一.需要安装的库 二.核心逻辑-替换 前言 假如你有一个Word模版文档,要在里面填写人员信息,但人员有成百上千个,手动填起 ...

  6. html图片如何转换成word文档格式,怎么将Word文档里的图片格式改成文字格式?

    回答: 使用Word编辑文档的时候,不仅可以保存成Word格式,也可以保存为其它格式.但有的时候需要将大批的已经编辑完成的Word文档转换成文本格式或其他格式文档,怎么办?如果通过"另存为& ...

  7. 把word文档转换成swf格式

    把word文档转换成swf格式 以前介绍过如何把PPT转换成swf格式,见 方法一 方法二:,也介绍过如何把word转换成pdf格式:点击查看,今天介绍如何把word文档转换成swf文件. 使用swf ...

  8. 关于FreeMarker生成word文档后转换为pdf得解决方法及常见问题

    关于FreeMarker生成word文档后转换为pdf得解决方法及常见问题 最近在做一个项目要求之前下载出的word简历直接变成pdf 格式进行展现.因为格式比较复杂,所以采用的时模板并用Freema ...

  9. word文档转换成swf格式文件在网页中用flash显示

    word文档转换成swf格式文件在网页中用flash显示 在OA系统中我们常常需要将上传的word文档在网页中阅览,一般上传后的文档用html的形式查看是会导致排版混乱的,这次我介绍在ASP.NET中 ...

最新文章

  1. 设置Enter键为默认键
  2. windows中的常用Dos命令
  3. ios开发两个简单的错误提示和原因
  4. 【云炬大学生创业基础笔记】第1章第4节 为什么需要创业讨论
  5. 为什么高手离不了Linux系统?我想这就是理由!
  6. Linux Centos安装步骤
  7. 从身份证管理系统思考企业CMDB的建设
  8. Linux /proc目录详解
  9. jenkins构建记录日志_构建企业日志记录层的清单
  10. linux tcp自动重连,LabVIEW TCP/IP 断开重连问题
  11. 智能硬件开发怎么做?机智云全套自助式开发工具助力高效开发
  12. nginx网关与gateway网关的区别
  13. IB中文:文学作品中幽默手法的表现方式(下)
  14. SqlServer 数据库修复
  15. 包含GODOT所有名称颜色的JSON
  16. 四川多多开店:拼多多如何获取好的评价
  17. SQLite查询记录总数
  18. 精彩回顾|「源」来如此 第六期 - 开源经济与产业投资
  19. 三天刷完《剑指OFFER编程题》--Java版本实现(第三天)
  20. 后端:svn忽略文件或文件夹 svn忽略不生效

热门文章

  1. python dataframe 写入到doc文件_将Python Pandas DataFrame写入Word文档
  2. oracle编程语言是什么意思,OraclePL编程语言的优点介绍
  3. 433lora手持机|手持数据采集终端|lora模块手持PDA
  4. 如何使用mac电脑远程你的windows电脑
  5. 使用css实现一个三角形
  6. vue导出excel加一个进度条_vue导出excel遇到的问题解决方法
  7. npm下载依赖时的问题
  8. JSFL批量删除fla文件中超出某个宽度的原件
  9. 工程测量实训心得体会
  10. python数据分析董付国ppt_Python数据分析、挖掘与可视化(慕课版) 董付国 著 / 人民邮电出版社...