无法使用 VBA 和 InsertXML 提取和重新插入 MS Word 内容控件
Unable to extract and re-insert MS Word Content Control using VBA and InsertXML
这个问题与我的另一个问题有关:
在 MS Word 中很容易使用 VBA 插入内容控件,例如:
ThisDocument.ContentControls.Add wdContentControlRichText, Selection.Range
我最近开始在 XML 方面进行更多探索,例如:
Debug.Print ThisDocument.Range.XML
似乎 (或实际上)为 Word 文档生成 XML。但是,如果我创建一个新的空白文档并添加一个内容控件,我将无法提取和重新插入内容控件 (oCC)。
我的步数:
- 向新文档添加了 2 个空白段落
- 在第 2 段添加了 oCC
- 选择了oCC段落
- 立即window:
thisdocument.Paragraphs(1).Range.InsertXML selection.Range.XML
乍一看,内容控件似乎是重复的,但仔细检查后发现,它已被删除,只剩下格式化文本(见图,顶部段落实际上只是格式化文本)。
以为我可以 聪明 MS Word 我将内容控件的属性设置为“...无法删除” ,但这没有帮助。
我还尝试插入一个单独的文档,以防问题与重复某些东西有关,而这些东西本应是独一无二的。
简而言之:
为了回答这个问题,我需要一种使用 VBA 和 XML 的组合将内容控件插入文档的方法(或者确认我正在尝试的是不可能).
刚刚意识到我应该使用 Selection.Range.WordOpenXML
而不是 Selection.Range.XML
这个问题与我的另一个问题有关:
在 MS Word 中很容易使用 VBA 插入内容控件,例如:
ThisDocument.ContentControls.Add wdContentControlRichText, Selection.Range
我最近开始在 XML 方面进行更多探索,例如:
Debug.Print ThisDocument.Range.XML
似乎 (或实际上)为 Word 文档生成 XML。但是,如果我创建一个新的空白文档并添加一个内容控件,我将无法提取和重新插入内容控件 (oCC)。
我的步数:
- 向新文档添加了 2 个空白段落
- 在第 2 段添加了 oCC
- 选择了oCC段落
- 立即window:
thisdocument.Paragraphs(1).Range.InsertXML selection.Range.XML
乍一看,内容控件似乎是重复的,但仔细检查后发现,它已被删除,只剩下格式化文本(见图,顶部段落实际上只是格式化文本)。
以为我可以 聪明 MS Word 我将内容控件的属性设置为“...无法删除” ,但这没有帮助。
我还尝试插入一个单独的文档,以防问题与重复某些东西有关,而这些东西本应是独一无二的。
简而言之:
为了回答这个问题,我需要一种使用 VBA 和 XML 的组合将内容控件插入文档的方法(或者确认我正在尝试的是不可能).
刚刚意识到我应该使用 Selection.Range.WordOpenXML
而不是 Selection.Range.XML