我有一些VBA代码(在Excel中),它将打开Word文档,断开链接,并将Word文档保存在其他位置。 全部自动化并传输给用户,他们将看到的只是一个文件出现在文件夹中。
我的问题是它适用于以下内容:
Private Sub Button1_Click()
Dim objWord As Object
Dim docWord As Object
Const wdDoNotSaveChanges As Long = 0
Set objWord = CreateObject("Word.Application")
Set docWord = objWord.Documents.Open(ThisWorkbook.Path & "\A folder\Myfile.doc")
objWord.ActiveDocument.Fields.Unlink
objWord.ActiveDocument.SaveAs ThisWorkbook.Path & "\" + Cells(1, 7) + "myfile.doc"
objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
objWord.Quit
End Sub
但不适用于以下应该在不同的Word文档上执行相同功能的内容:
Private Sub Button2_Click()
Dim objWord As Object
Dim docWord As Object
Const wdDoNotSaveChanges As Long = 0
Set objWord = CreateObject("Word.Application")
Set docWord = objWord.Documents.Open(ThisWorkbook.Path & "\A Folder\Myfile2.doc")
objWord.ActiveDocument.Fields.Unlink
objWord.ActiveDocument.SaveAs ThisWorkbook.Path & "\" + Cells(1, 7) + "MyFile2.doc"
objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
objWord.Quit
End Sub
当我打开生成的第一个文档(第一个代码的结果)时,它不会要求我更新链接,链接会按预期被破坏。
当我打开生成的第二个文档(第二个代码的结果)时,它会要求我更新链接。
编辑:
上面的代码的两个部分都已合并并放入一个转发给它的变量的子 - 仍然是一个文档更新和取消链接的相同结果,另一个文档要求用户打开是否要更新链接
所以现在很可能是Word文档的问题。
两个Word文档都通过Paste Special>链接到Excel。粘贴链接。
两者都只链接到一个Excel文档。
我能看到的唯一区别是一个文档比另一个文档有更多的链接,但链接的数量肯定不重要?
答案 0 :(得分:0)
经过进一步调查,问题仅限于文件的标题。我的代码将取消链接文档正文中的所有字段,但不会对标题执行此操作。结果,标题保持链接,并询问用户是否要更新。
我最终在这里找到了我的解决方案: VBA Excel - Unlink headers & footers in Word