繁体   English   中英

VB .NET 自动化,Document.SaveAs 损坏 Word 文档

[英]VB .NET automation, Document.SaveAs corrupting Word Document

刚开始,我尝试总结一下我想做的事情:

我在 vs2019 中完成的 vb .net 应用程序只是自动化并填充了一个单词模板,最后它应该将它保存在由保存在变量 URL 中的文本框提供的文件夹中。

一切都很好,但如果我尝试打开 docx 这个词,我会得到这个:

在此处输入图片说明单词错误 .

此外,如果我使用 word 本身的 saveAs 手动保存,则文件不再损坏。 几乎相同的文件之间存在大小差异:

在此处输入图片说明word文档差异1 .

在此处输入图片说明word文档差异2 .

在此处输入图片说明word文档区别3 .

所以,文件“Adresa OCPI2”是一个损坏的文件“Adresa OCPI”,只是重命名了。 “Adresa OCPI”已手动保存。

WPS office 可以出于某种原因打开损坏的文件,但我不得不删除该应用程序,因为它不利于自动化。

使用 Word 2007,在另一台装有 2019 的计算机上,它有同样的问题:(。从技术上讲,如果引用不好,我将无法到达保存点:/但这是有争议的。

尝试在最后关闭 ("oDoc.Close() oWord.Quit() and Me.Close()") 但没有区别

Imports Microsoft.Office.Interop
Imports Word = Microsoft.Office.Interop.Word
Dim oWord As Word.Application
                Dim oDoc As Word.Document
                Dim URL As String 
URL = TextBox9.Text
oWord = CreateObject("Word.Application")
                oWord.Visible = True
oDoc = oWord.Documents.Open(URL & "\AdresaOCPITemplate.dotx")
oDoc.Activate()

...

oDoc.SaveAs(URL & "\Adresa OCPI.docx")

我只是不想手动保存东西,如果它看起来很简单,很抱歉:/编辑 1,解压缩 docx,发现 xml diff 也出现在细节中。

在此处输入图片说明

在此处输入图片说明

出于好奇编辑 2 我在最后尝试了这种代码组合

oDoc.Close()
oDoc = oWord.Documents.Open(URL & "\Adresa OCPI.docx")

并得到:
“Word 在处理 XML 文件 Adresa OCPI 时遇到错误”没有代码错误,这是在调试期间收到的

dotx 格式已损坏,我应该使用 docx 作为模板吗????

编辑 3 头疼,docx 没有问题,但我希望 dotx 具有额外的安全性,这样文件就不会被意外覆盖或修改。 所以从技术上讲,我找到了一个解决方法,但我确实希望最终使用 dotx,这个问题会留给我们的 NA 朋友开放,也许他们会醒来,很快就会关闭它。

编辑4:

如何使用 VB.NET 编辑现有的 MS Word 模板 (.dotx)?

Mods请不要关闭我的问题...

Open 打开模板进行编辑,然后将其保存为 docx,而在内部它仍然是 dotx。 您应该使用 Documents.Add 而不是 Documents.Open。 – 来自评论的 GSerg

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM