ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4431|回复: 1

大家帮我看看这段VBA的宏,是批量把doc转为Html的

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-6-20 22:18 | 显示全部楼层 |阅读模式

做网页编辑的朋友经常会遇到要把word文档(.doc)批量转换为html超文本的情况。笔者便利用word97的vba语言编写了一个word宏,来实现将doc文档批量转换成html超文本的工作。

  1.?准备工作:先建立子目录doc2htm,在该目录下再创建doc和htm两个子目录。把要转换的doc文档复制到doc子目录下。

  2.?录制宏。启动word97录制一个新宏,取名称为doc2htm,方法是:选择选单项上的“工具…宏…录制新宏…doc2htm”启动宏录制器,然后打开一个要编辑的文档,按f12键显示“另存为”对话框,此时应选择文件类型为“html超文本”,点“确定”存盘后便可以停止录制宏。

  3.?编辑宏代码,选择选单项“工具…宏…宏”(或按alt+f8)调出宏窗口,选中“doc2htm”后点击“编辑”按钮,此时word启动vba编辑器,我们便可以修改doc2htm了。这里要用vba编程解决3个问题:

  (1) 文件名称的获得。

  首先用一个while...wend循环获取c:\doc2htm\doc目录下的word文档的数目,然后在一个for ... next 循环中利用dir$()函数取得全部word文档名称并赋值给list—$(),这样便可以逐次打开每一个文档,另存为html超文本,直至将全部的doc文档转换完毕。

  (2) sendkeys语句的使用。

  由于office97自带的html转换器在宏的运行过程中不断显示对话框,提醒用户选择gb chinese语言代码(默认的),使得循环无法连续进行,而在vba语言中又没有相应的语句控制该转换器,因此笔者在这里使用了sendkeys语句。这样程序运行过程中便无需用户干预了。

  (3) 精简宏代码,删除不必要的属性。

  在录制doc2htm宏时,word会自动记录你的操作。例如,下面语句的作用是打开一个word文档。

  documents.open filename:=list—$(i), confirmconversions:=false,

  readonly:=false, addtorecentfiles:=false, passworddocument:=″ ″,

  passwordtemplate:=″ ″, revert:=false, writepassworddocument:=″ ″,

  writepasswordtemplate:=″ ″, format:=wdopenformatauto

  其中多数属性是用不到的,经删改后如下:

  documents.open filename:=list—$(i)

  读者可参考vba帮助文件,根据实际需要来自行修改,此处不再赘述。

  附宏代码如下:

  sub doc2htm()

  dim temp$

  dim count—

  dim i

  temp$ = dir$(″c:\my documents\doc2htm\doc\*.doc″)

  count— = 0

  while temp$ 〈〉 ″ ″

  count— = count— + 1

  temp$ = dir$()

  wend

  if count— 〉 0 then

  redim list—$(count—)

  list—$(0) = dir$(″c:\my documents\doc2htm\doc\*.doc″)

  for i = 1 to count—

   list—$(i) = dir$()

  next i

  wordbasic.sortarray list—$()

  for i = 1 to count—

   redim list—$(i)

   clength = len(list—$(i))

   list—$(i) = left(list—$(i), clength - 4)

   documents.open filename:=″c:\my documents\doc2htm\doc\″ + list—$(i)

   sendkeys ″{enter}″

   activedocument.saveas filename:=″c:\my documents\doc2htm\htm\″ + list—$(i), fileformat:=100

   activedocument.close

  next i

  msgbox ″全部文档转换完毕 !″

  else

  msgbox ″当前目录下没有doc文档 !″

  end if

  end sub

  使用doc2htm宏时应注意以下几点:

  (1)word文档转换成html超文本后会发生一些变化。例如,word下设置的一些格式如页面边框、页眉页脚、脚注尾注、突出显示等都会丢失;图片和剪贴画等图形以及公式、图表和其他ole对象这些项目会转换为gif格式;域结果会转换成文字,但不会自动更新;动态文字保留下来,但效果会丢失等

  (2)若使用doc2htm时只是把word文档又另存成了doc格式,请查看安装word97时,是否已选中web工具,或者宏程序中activedocument.saveas语句的fileformat属性是否等于100(html格式)。

  (3)在宏的运行过程中,不要切换窗口进行其它的操作。由于sendkeys语句只对当前的活动窗口有效,因此应该等到宏程序结束后再做别的工作。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-20 22:20 | 显示全部楼层

上面这段文字是把doc转html的,但是我的是officeXP,不知道兼容吗?我试过,好像不行。

作者所说的目录,应该是“c:\my documents\doc2htm”吧?

大家帮我想想办法,或者帮我录一个officeXP的宏,传上来,谢谢!

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-21 17:44 , Processed in 0.038902 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表