首页 > 编程 > VBScript > 正文

TXT转HTM、HTML「TXT转网页」的vbs实现代码

2020-06-26 18:28:35
字体:
来源:转载
供稿:网友
试用过的Visual CHM,Power CHM,Easy CHM也非常令人失望。看来还是自给自足吧。本文介绍的方法不一定适用于所有用户,看不懂的同学一律不要提问和请教
 
在众多文本编辑器中,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调用其中内容,依次转换即可。 

最后:该方法转换的质量比较高,但是也附带一些弊端,那便是垃圾代码很多,生成的网页文件很大。
 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表