VB6实现Word2007的docx转带附属文件夹HTML遇格式错误
问题:VB6中Word转HTML仅修改扩展名未实际转换格式
我想把Word 2007的docx文件保存为带有附属文件子文件夹的HTML文件。为了了解操作方法,我在Word 2007中录制了宏,但宏仅记录了相关设置,未包含保存操作:
Sub Makro3() With ActiveDocument.WebOptions .RelyOnCSS = True .OptimizeForBrowser = True .OrganizeInFolder = True .UseLongFileNames = True .RelyOnVML = False .AllowPNG = True .ScreenSize = msoScreenSize800x600 .PixelsPerInch = 96 .Encoding = 65001 End With With Application.DefaultWebOptions .UpdateLinksOnSave = True .CheckIfOfficeIsHTMLEditor = False .CheckIfWordIsDefaultHTMLEditor = False .AlwaysSaveInDefaultEncoding = False .SaveNewWebPagesAsWebArchives = True End With End Sub
我在VB6中改写了代码,替换了VB6不支持的枚举并添加了SaveAs语句,但保存后的文件仅扩展名改为.html,实际仍是docx格式。请问哪里操作错误?
Public Sub pCreateHtml(ByVal uPath As String) Dim oWord As New Word.Application Set oWord = New Word.Application Dim oDoc As Word.Document Set oDoc = oWord.Documents.Open(uPath, True, True) With oDoc.WebOptions .RelyOnCSS = True .OptimizeForBrowser = True .OrganizeInFolder = True .UseLongFileNames = True .RelyOnVML = False .AllowPNG = True .ScreenSize = 3 'msoScreenSize800x600 .PixelsPerInch = 96 .encoding = 65001 End With With oDoc.Application.DefaultWebOptions .UpdateLinksOnSave = True .CheckIfOfficeIsHTMLEditor = False .CheckIfWordIsDefaultHTMLEditor = False .AlwaysSaveInDefaultEncoding = False .SaveNewWebPagesAsWebArchives = True End With oDoc.SaveAs Replace(uPath, ".docx", ".html") oDoc.Saved = True oDoc.Close oWord.Quit Set oWord = Nothing End Sub
问题原因及解决方法
核心错误
调用SaveAs时未指定文件格式参数,Word默认会按原文档格式(docx)保存,仅修改文件名扩展名,内容并未转换为HTML。
解决步骤
- 添加文件格式参数:在
SaveAs方法中指定HTML格式对应的数值(Word 2007中wdFormatHTML的枚举值为8)。 - 调整Web存档设置:原代码中
SaveNewWebPagesAsWebArchives = True会生成单文件Web存档(.mht),而非带附属文件夹的普通HTML,需改为False才能生成带资源文件夹的HTML文件。
修改后的完整代码
Public Sub pCreateHtml(ByVal uPath As String) Dim oWord As New Word.Application Set oWord = New Word.Application Dim oDoc As Word.Document Set oDoc = oWord.Documents.Open(uPath, True, True) With oDoc.WebOptions .RelyOnCSS = True .OptimizeForBrowser = True .OrganizeInFolder = True .UseLongFileNames = True .RelyOnVML = False .AllowPNG = True .ScreenSize = 3 'msoScreenSize800x600 .PixelsPerInch = 96 .encoding = 65001 End With With oDoc.Application.DefaultWebOptions .UpdateLinksOnSave = True .CheckIfOfficeIsHTMLEditor = False .CheckIfWordIsDefaultHTMLEditor = False .AlwaysSaveInDefaultEncoding = False .SaveNewWebPagesAsWebArchives = False ' 修改为False,生成带文件夹的HTML End With ' 指定保存格式为HTML(wdFormatHTML = 8) oDoc.SaveAs Replace(uPath, ".docx", ".html"), FileFormat:=8 oDoc.Saved = True oDoc.Close oWord.Quit Set oWord = Nothing End Sub
内容的提问来源于stack exchange,提问作者tmighty
相关产品推荐
相关产品推荐

