TXT转HTM、HTML「TXT转网页」的vbs实现代码
程序员文章站
2022-06-23 21:03:07
在众多文本编辑器中,microsoft的word是功能很强大的。况且xp pro本身支持vbs调用word文档对象,那么使用vbs是最好不过的了。思路如下:vbs打开wor...
在众多文本编辑器中,microsoft的word是功能很强大的。况且xp pro本身支持vbs调用word文档对象,那么使用vbs是最好不过的了。思路如下:vbs打开word,word打开txt,另存为网页,退出。
1. vbs调用word.application组件
如果电脑中安装了word,那么用vbs打开word其实很简单,如下:
set objword = createobject("word.application")
objword.visible = true
这样可以以可视的方式打开word。在msdn的页面{http://msdn.microsoft.com/en-us/library/kw65a0we(vs.80).aspx}上我们可以看到在vbs中仅可以调用两个word的子集:
document object 打开的文档对象
selection object 默认选择对象
不过这两个子集还包含子集,所以可以使用很多功能。word文档对象本身是vba的组件,vbs和vba又有着明显的界限,所以虽然vbs可以调用word文档对象,但是具体怎么用又是个未知的领域。幸好从微软的一些只言片语和一些短篇中能够大概知道用法。
2. 使用word实例打开txt
在创建一个word实例objword后,我们应该用其打开txt了,如下:
set objdoc = objword.documents.open("e:\temp\1.txt",format=5)
现在已经打开一个txt了,format=5即是说txt是unicode的:
─────────────────────────────────────────────────────────────────
wdopenformatallword 6 与 word 早期版本向后兼容的 microsoft office word 格式。
wdopenformatauto 0 现有格式。
wdopenformatdocument 1 word 格式。
wdopenformatencodedtext 5 编码文本格式。
wdopenformatrtf 3 rtf 格式。
wdopenformattemplate 2 用作 word 模板。
wdopenformattext 4 未编码的文本格式。
wdopenformatunicodetext 5 unicode 文本格式。
wdopenformatwebpages 7 html 格式。
wdopenformatxml 8 xml 格式。
wdopenformatallwordtemplates 13 word 模板格式。
wdopenformatdocument97 1 microsoft word 97 文档格式。
wdopenformattemplate97 2 word 97 模板格式。
wdopenformatxmldocument 9 xml 文档格式。
wdopenformatxmldocumentmacroenabled 10 启用了宏的 xml 文档格式。
wdopenformatxmltemplate 11 xml 模板格式。
wdopenformatxmltemplatemacroenabled 12 启用了宏的 xml 模板格式。
─────────────────────────────────────────────────────────────────
由于word打开txt后默认字体大小为10.5磅,这个值在网页中是很小的,合适的值是13~15磅,所以需要更改字体大小,同时还需要更改一下默认的西方字体,这里选用--times new roman:
set orange = objdoc.range()
orange.font.size = "13"
orange.font.name = "times new roman"
然后就是首行应用“标题一”样式,如果首行为空行那么用编辑器使其不为空,其实也可以在vbs中实现,不过代码量增加,这样就很麻烦不利调试:
set oselection = objword.selection
oselection.homekey wdstory, wdmove
oselection.style = objword.activedocument.styles("标题 1")
更改完成后,保存:
objdoc.saveas opath & ".htm", 10
objdoc.close
下面是wdsaveformat常数列表:
─────────────────────────────────────────────────────────────────
wdformatdocument 0 microsoft office word 格式。
wdformatdostext 4 microsoft dos 文本格式。
wdformatdostextlinebreaks 5 microsoft dos 文本格式,并且保留换行符。
wdformatencodedtext 7 编码文本格式。
wdformatfilteredhtml 10 筛选的 html 格式。
wdformathtml 8 标准 html 格式。
wdformatrtf 6 rtf 格式。
wdformattemplate 1 word 模板格式。
wdformattext 2 microsoft windows 文本格式。
wdformattextlinebreaks 3 windows 文本格式,并且保留换行符。
wdformatunicodetext 7 unicode 文本格式。
wdformatwebarchive 9 web 档案格式。
wdformatxml 11 可扩展标记语言 (xml) 格式。
wdformatdocument97 0 microsoft word 97 文档格式。
wdformatdocumentdefault 16 word 默认文档文件格式。对于 microsoft office word 2007,这是 docx 格式。
wdformatpdf 17 pdf 格式。
wdformattemplate97 1 word 97 模板格式。
wdformatxmldocument 12 xml 文档格式。
wdformatxmldocumentmacroenabled 13 启用了宏的 xml 文档格式。
wdformatxmltemplate 14 xml 模板格式。
wdformatxmltemplatemacroenabled 15 启用了宏的 xml 模板格式。
wdformatxps 18 xps 格式。
─────────────────────────────────────────────────────────────────
word实例退出:
objword.quit
3. 完整代码
' ********************************************************************************
' txt转网页,仅作转换演示
' created by 千羽之城 / 2009年9月22日
' http://hi.baidu.com/asnahu
' ********************************************************************************
dim objword,objdoc,orange,opath
const wdstory = 6
const wdmove = 0
const wdopenformatunicodetext = 5
const wdformatfilteredhtml = 10
strfile = "e:\temp\1.txt" ' 该路径必须是完整路径
set objword = createobject("word.application")
objword.visible = true
set objdoc = objword.documents.open(strfile, format=5)
set orange = objdoc.range()
orange.font.size = "13"
orange.font.name = "times new roman"
set oselection = objword.selection
oselection.homekey wdstory, wdmove
oselection.style = objword.activedocument.styles("标题 1")
opath = split(strfile,".")(0)
objdoc.saveas opath & ".htm", 10
objdoc.close
objword.quit
如果要实现批量的多文本转换,那么建议生成一个txt文件列表,然后用fso调用其中内容,依次转换即可。
最后:该方法转换的质量比较高,但是也附带一些弊端,那便是垃圾代码很多,生成的网页文件很大。
1. vbs调用word.application组件
如果电脑中安装了word,那么用vbs打开word其实很简单,如下:
set objword = createobject("word.application")
objword.visible = true
这样可以以可视的方式打开word。在msdn的页面{http://msdn.microsoft.com/en-us/library/kw65a0we(vs.80).aspx}上我们可以看到在vbs中仅可以调用两个word的子集:
document object 打开的文档对象
selection object 默认选择对象
不过这两个子集还包含子集,所以可以使用很多功能。word文档对象本身是vba的组件,vbs和vba又有着明显的界限,所以虽然vbs可以调用word文档对象,但是具体怎么用又是个未知的领域。幸好从微软的一些只言片语和一些短篇中能够大概知道用法。
2. 使用word实例打开txt
在创建一个word实例objword后,我们应该用其打开txt了,如下:
set objdoc = objword.documents.open("e:\temp\1.txt",format=5)
现在已经打开一个txt了,format=5即是说txt是unicode的:
─────────────────────────────────────────────────────────────────
wdopenformatallword 6 与 word 早期版本向后兼容的 microsoft office word 格式。
wdopenformatauto 0 现有格式。
wdopenformatdocument 1 word 格式。
wdopenformatencodedtext 5 编码文本格式。
wdopenformatrtf 3 rtf 格式。
wdopenformattemplate 2 用作 word 模板。
wdopenformattext 4 未编码的文本格式。
wdopenformatunicodetext 5 unicode 文本格式。
wdopenformatwebpages 7 html 格式。
wdopenformatxml 8 xml 格式。
wdopenformatallwordtemplates 13 word 模板格式。
wdopenformatdocument97 1 microsoft word 97 文档格式。
wdopenformattemplate97 2 word 97 模板格式。
wdopenformatxmldocument 9 xml 文档格式。
wdopenformatxmldocumentmacroenabled 10 启用了宏的 xml 文档格式。
wdopenformatxmltemplate 11 xml 模板格式。
wdopenformatxmltemplatemacroenabled 12 启用了宏的 xml 模板格式。
─────────────────────────────────────────────────────────────────
由于word打开txt后默认字体大小为10.5磅,这个值在网页中是很小的,合适的值是13~15磅,所以需要更改字体大小,同时还需要更改一下默认的西方字体,这里选用--times new roman:
set orange = objdoc.range()
orange.font.size = "13"
orange.font.name = "times new roman"
然后就是首行应用“标题一”样式,如果首行为空行那么用编辑器使其不为空,其实也可以在vbs中实现,不过代码量增加,这样就很麻烦不利调试:
set oselection = objword.selection
oselection.homekey wdstory, wdmove
oselection.style = objword.activedocument.styles("标题 1")
更改完成后,保存:
objdoc.saveas opath & ".htm", 10
objdoc.close
下面是wdsaveformat常数列表:
─────────────────────────────────────────────────────────────────
wdformatdocument 0 microsoft office word 格式。
wdformatdostext 4 microsoft dos 文本格式。
wdformatdostextlinebreaks 5 microsoft dos 文本格式,并且保留换行符。
wdformatencodedtext 7 编码文本格式。
wdformatfilteredhtml 10 筛选的 html 格式。
wdformathtml 8 标准 html 格式。
wdformatrtf 6 rtf 格式。
wdformattemplate 1 word 模板格式。
wdformattext 2 microsoft windows 文本格式。
wdformattextlinebreaks 3 windows 文本格式,并且保留换行符。
wdformatunicodetext 7 unicode 文本格式。
wdformatwebarchive 9 web 档案格式。
wdformatxml 11 可扩展标记语言 (xml) 格式。
wdformatdocument97 0 microsoft word 97 文档格式。
wdformatdocumentdefault 16 word 默认文档文件格式。对于 microsoft office word 2007,这是 docx 格式。
wdformatpdf 17 pdf 格式。
wdformattemplate97 1 word 97 模板格式。
wdformatxmldocument 12 xml 文档格式。
wdformatxmldocumentmacroenabled 13 启用了宏的 xml 文档格式。
wdformatxmltemplate 14 xml 模板格式。
wdformatxmltemplatemacroenabled 15 启用了宏的 xml 模板格式。
wdformatxps 18 xps 格式。
─────────────────────────────────────────────────────────────────
word实例退出:
objword.quit
3. 完整代码
复制代码 代码如下:
' ********************************************************************************
' txt转网页,仅作转换演示
' created by 千羽之城 / 2009年9月22日
' http://hi.baidu.com/asnahu
' ********************************************************************************
dim objword,objdoc,orange,opath
const wdstory = 6
const wdmove = 0
const wdopenformatunicodetext = 5
const wdformatfilteredhtml = 10
strfile = "e:\temp\1.txt" ' 该路径必须是完整路径
set objword = createobject("word.application")
objword.visible = true
set objdoc = objword.documents.open(strfile, format=5)
set orange = objdoc.range()
orange.font.size = "13"
orange.font.name = "times new roman"
set oselection = objword.selection
oselection.homekey wdstory, wdmove
oselection.style = objword.activedocument.styles("标题 1")
opath = split(strfile,".")(0)
objdoc.saveas opath & ".htm", 10
objdoc.close
objword.quit
如果要实现批量的多文本转换,那么建议生成一个txt文件列表,然后用fso调用其中内容,依次转换即可。
最后:该方法转换的质量比较高,但是也附带一些弊端,那便是垃圾代码很多,生成的网页文件很大。