0

カスタムXML要素をコンテンツコントロールに置き換えることにより、Word2003の既存のxmlドキュメントをDOCXに変換することを目的としたアプリケーションを作成しています。カスタムXML要素とコンテンツコントロールをサポートできるのはWord2007のみであるため、この目的でInteropアセンブリとWord2007を使用しています。

提案されたアプローチは次のとおりです。1。xmlドキュメントを読みます。2。DOCXとして保存します。3. DOCXファイルからXMLNode(カスタムXML要素)を識別します。4。XMLNodes / Mapping XMLNodes toContentControlsの範囲に新しいコンテンツコントロールを配置します。5.XMLNodeを削除します。

上記を実装するときに問題が見つかりました。問題は、上記のステップ4で、ドキュメントが保存されると、ドキュメントに追加されたすべてのコンテンツコントロールが削除されることです。これは、ドキュメントがWord 2003互換モードで保存され、Word2003がコンテンツコントロールをサポートしていないためです。

互換モードを無効にするために多くのことを試みましたが、それを達成できませんでした。

あなたの誰かが親切にそれをするいくつかの方法を私に提案できますか?

4

2 に答える 2

0

私もあなたがしていることをやろうとしてきました。open xmlを使用して行うことができると誰かが指摘しました

于 2013-02-15T08:02:13.220 に答える
0

ステップ 1 : Word 2003 ドキュメントで以下の Word 2003 マクロを実行し、保存します。

'Word 2003 macro
Sub BookmarkUpdate()

  Dim objNode As XMLNode
    For Each objNode In ActiveDocument.XMLNodes
        objNode.Range.Bookmarks.Add (objNode.BaseName)
    Next
End Sub

ステップ 2 : 同じ文書を Word 2010 で開き、以下の Word 2010 マクロを実行して保存します。

' Word 2010 macro
Sub CreateContentControl()
Dim name As String
For Each bk In ActiveDocument.Bookmarks
   Dim objcc As ContentControl
   Dim objRange As Range   
   ' Get the first paragraph as a range object.
   Set objRange = bk.Range
   ' Create a rich text content control.
   Set objcc = ActiveDocument.ContentControls.Add(wdContentControlRichText, objRange)  
   name = bk.name 
   objcc.Title = name
   objcc.Tag = name
 Next
End Sub
于 2015-10-30T18:21:18.503 に答える