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

VB.NET自动化,Document.SaveAs损坏Word文档,vb.net,ms-word,Vb.net,Ms Word,首先,我试着总结一下我想做的事情: 我的vb.net应用程序在vs2019中完成,它只是自动填充一个word模板,最后应该将其保存在一个由保存在变量URL中的文本框提供的文件夹中 一切都很好,但如果我尝试打开docx这个词,我会发现: 另外,如果我使用word本身的saveAs手动保存,则文件不再损坏。而且几乎相同的文件在大小上存在差异: 因此,文件“Adresa OCPI2”是一个已损坏的文件“Adresa OCPI”,只是被重命名了。“Adresa OCPI”已手动保存 出于

首先,我试着总结一下我想做的事情:

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

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

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

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

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

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

尝试在结尾使用(“oDoc.Close()oWord.Quit()和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差异

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

oDoc.Close()
oDoc = oWord.Documents.Open(URL & "\Adresa OCPI.docx")
得到:
“Word在处理XML文件Adresa OCPI时遇到错误” 没有代码错误,这是在调试期间收到的

dotx格式被破坏,我应该使用docx作为模板,这是偶然的吗

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

编辑4:


Mods请不要关闭我的问题…

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

docx是一个zip归档文件。在winzip或类似版本中打开它,然后批量比较归档文件中的文件。我学到了一些东西从这里:),但是找不到指向模板的xml的diff-ex diff:/噢,您正在打开一个模板并将其保存为文档。
Open
打开模板进行编辑,然后将其保存为docx,而在内部它仍然是dotx。你应该使用
文档。添加
而不是
文档。打开
。爱你:3,在文档中找不到。成功了。