使用带有IF域代码Word文档的XML映射窗格

时间:2016-03-01 11:57:54

标签: if-statement ms-word fieldcodes

我一直在尝试使用XML Mapping Pane中的内容控件和IF Field Code。但我遇到了一些问题。似乎我无法将内容控件的值与我想要的内容进行比较

例如:

{ IF Language_CodeValue <> "DAN" "ENGLISH" "DANISH" } 

Language_CodeValue是来自XML Mapping Pane的内容控件。任何帮助,将不胜感激。当我在word文档上显示时,Language_CodeValue中包含DAN。似乎与不起作用的字符串比较

1 个答案:

答案 0 :(得分:0)

内容控件无法成功嵌套在任何类型的字段代码中。它们无法正常工作。

当你从逻辑上考虑它时,这是有道理的,因为当一个字段更新它可以显示的唯一的东西是结果,这意味着不能使用内容控件。或者如果可以使用,则IF字段无法正常工作。所以基本上字段代码需要忽略内容控件。

没有简单的解决方法,但有一种可能性是使用Document对象的ContentControlBeforeStoreUpdate事件在更改自定义XML部件中的XML节点时运行对象模型操作。它可以将其内容写入CustomDocumentProperty。然后可以将DocProperty字段嵌套在If字段中。

成功将内容控件映射到自定义xml部件后,可以触发ContentControlBeforeStoreUpdate事件。此事件(必须)在包含内容控件的文档的ThisDocument模块中定义。

在VBA编辑器中,在“项目”窗口中双击包含内容控件的文档的ThisDocument。从代码窗口左上角的列表中选择“文档”。从右上角的列表中选择ContentControlBeforeStoreUpdate。这将插入事件的Sub ... End Sub存根。

Private Sub Document_ContentControlBeforeStoreUpdate( _
            ByVal ContentControl As ContentControl, _
            Content As String)
  Select Case ContentControl.Title
    Case "Tree"
        ActiveDocument.CustomDocumentProperties("test").Value = Content
    Case Else
  End Select
End Sub

请注意,链接到自定义xml部件的所有内容控件都将触发此事件。因此,您应该检查内容控件的标题(或标记)属性并分支相应的操作。