S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

Aspose.Wordsでブックマークに値を貼り付ける

文書テンプレートの、文書内にあるブックマークには値が貼り付けることができるが、ヘッダにあるブックマークに貼り付けると、下記のような例外が出る。

System.ArgumentException: Cannot insert a node of this type at this location.
Aspose.Words.CompositeNode.xef23aa45e7612fdd(Node x40e458b3a58f5782, Node xff5adbb92d63bf52, Boolean x7f43f79506f73a73)
Aspose.Words.CompositeNode.x2729186e1a0b4aeb(Node x10aaa7cdfa38f254, Node xca09b6c2b5b18485, Node x22bff10c3dd1f70f)
x28925c9b27b37a46.x5699f8523a546a42.x52b190e626f65140()
Aspose.Words.Bookmark.set_Text(String value)

サポートに連絡したところ、文書テンプレートを送って下さいってことになって、お客さんのテンプレート出す訳にいかないので、新規にテンプレートを作成して実行したら、例外は発生しなかった。
結局、ブックマークの削除、追加でなく、罫線などあったので、ヘッダを一度削除して再度罫線とブックマークを設定したら問題なく貼り付けることができた。
なんとなく、文書テンプレートを作成したWordのバージョンとかって話なのか?とか。


ちなみに、ブックマークに値を貼り付けるコードはこんな感じ。

Aspose.Words.Document doc = new Document(Wordテンプレートのパス);
doc.Range.Bookmarks["YYY"].Text = "貼り付けるテキスト";  // 問題なし
foreach(Aspose.Words.Section sec in doc.Sections)
{
  foreach(Aspose.Words.HeaderFooter hf in sec.HeaderFooters)
  {
    Aspose.Words.Bookmark bm = hf.Range.Bookmarks["XXX"];  // bm != null
    bm.Text = "貼り付けるテキスト";                        // ここで上記の例外
  }
}