Vba 如何以编程方式更改Word 2007主控文档中的子文档位置?

Vba 如何以编程方式更改Word 2007主控文档中的子文档位置?,vba,ms-word,Vba,Ms Word,我们遇到了一个令人不快的情况:各种主文档指的是由于目录重命名而不再存在的子文档。是否有一种编程方式可以在不丢失主/子文档关系的情况下调整超链接字段 我已经走了这么远 Sub FixyaLinks() Dim s 'As String Dim i As Long Dim bTrackRevFlag As Boolean Dim bShowRevFlag As Boolean bTrackRevFlag = ActiveDocument.TrackRevis

我们遇到了一个令人不快的情况:各种主文档指的是由于目录重命名而不再存在的子文档。是否有一种编程方式可以在不丢失主/子文档关系的情况下调整超链接字段

我已经走了这么远

Sub FixyaLinks()
    Dim s 'As String
    Dim i As Long
    Dim bTrackRevFlag As Boolean
    Dim bShowRevFlag As Boolean

    bTrackRevFlag = ActiveDocument.TrackRevisions
    bShowRevFlag = ActiveDocument.ShowRevisions

    ActiveDocument.TrackRevisions = False
    ActiveDocument.ShowRevisions = False

    For i = 1 To ActiveDocument.Fields.Count
    s = ActiveDocument.Fields.Item(i).Code.Text
    If InStr(s, "CURRICULUM\\NEW") Then
        s = Replace(s, "NEW Foundation Units-in developing", "Foundation Programme Units")
        ActiveDocument.Fields.Item(i).Code.Text = s
    End If
    Next
    ActiveDocument.TrackRevisions = bTrackRevFlag
    ActiveDocument.ShowRevisions = bShowRevFlag
End Sub
它在
ActiveDocument.Fields.Item(i).code.Text=s
上爆炸,出现错误5686(“由于主控文档中的“跟踪更改”选项与子文档中的选项不匹配,因此无法完成该操作。请使主控文档和子文档中的“跟踪更改”选项相同。”),我不完全确定那是什么意思


有人知道吗?

根据您的代码和编写,我想说的是,这个错误基本上意味着您在运行母版以修复它之前已经关闭了跟踪更改,但是您正在更改的子文档链接已经打开了跟踪更改

你试过打开音轨变化和改变链接吗


您可能还应该测试要修改的字段类型。文档中可能有其他类型的字段不是链接,您可能会在不经意间将它们与此代码混淆。我认为您可以使用Field.Type

根据您的代码和写入p,我认为该错误基本上意味着您在运行母版以修复它之前已经关闭了跟踪更改,但是您正在更改的子文档链接已经打开了跟踪更改

你试过打开音轨变化和改变链接吗


您可能还应该测试要修改的字段类型。文档中可能有其他类型的字段不是链接,您可能会在不经意间将它们与此代码混淆。我想你可以用Field.Type来做,我刚刚找到了一个非编程的解决方法!在XML中保存,编辑XML,在Word中重新打开。不过,我还是对编程解决方案感兴趣。我刚刚找到了一个非编程解决方案!在XML中保存,编辑XML,在Word中重新打开。尽管如此,我还是对编程解决方案感兴趣。