ブックマーク位置(作業中)から範囲を選択します。
Word.ContentControl wcc;
Word.Selection WSelection = wApp.Selection;
object obj;
obj = (object)wApp.ActiveDocument.Bookmarks.get_Item(bookmark).Range;
次に、範囲の前に移動して段落を追加し、新しい段落に移動します。これは、ブックマークの前に ContentControl を追加したいためです (注文上の理由から) (動作中):
Word.Range WRange = WSelection.Range;
object count = 1;
object back = -1;
(obj as Word.Range).Move(Unit: Word.WdUnits.wdCharacter, Count: ref back);
(obj as Word.Range).Paragraphs.Add();
(obj as Word.Range).Move(Unit: Word.WdUnits.wdParagraph, Count: ref count);
ここで、ContentControl を追加します (動作中):
wcc = WRange.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText, ref obj);
wcc.LockContentControl = true;
wcc.SetPlaceholderText(null, null, " ");
wcc.Tag = fileName;
そして今、その ContentControl に別の Word ファイルを挿入したい (動作していません!):
wcc.Range.InsertFile(Path.Combine(path, fileName));
外部 Word ファイルには、4 行のテーブルが含まれています (単なるサンプル ファイル)。コンテンツは、内部ではなく ContentControl の後に挿入されるようになりましたか? 結果は次のようになります。
ContentControl の Text を設定しようとすると、正常に動作します (コンテンツ「テスト」は ContentControl の内部にあります):
wcc.Range.Text = "test";
最後のテストの結果、正しい範囲を選択したと思いますが、テーブルが ContentControl の外にあるのはなぜですか?
編集:
コードで実行したい手順でマクロを記録し、ContentControl と他の文字 (私の場合はスペース) がある行にテーブルを挿入できないことを発見しました。したがって、この解決策を得るために別の段落を追加しました。
Word.Range WRange = WSelection.Range;
object next = 1;
object back = -1;
(obj as Word.Range).Move(Unit: Word.WdUnits.wdCharacter, Count: ref back);
(obj as Word.Range).Paragraphs.Add();
(obj as Word.Range).Move(Unit: Word.WdUnits.wdParagraph, Count: ref next);
(obj as Word.Range).Paragraphs.Add();
(obj as Word.Range).Move(Unit: Word.WdUnits.wdCharacter, Count: ref back);
wcc = WRange.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText, ref obj);
wcc.LockContentControl = true;
wcc.SetPlaceholderText(null, null, " ");
wcc.Tag = fileName;
wcc.Range.InsertFile(Path.Combine(path, fileName));
その結果、1 番目と 2 番目に追加された ContentControl (ContentControl 内のテーブルの最初と最後にある段落を含む) の間に、合計 3 つの段落で余分な段落があることになります... より良い解決策を提供する人はいますか?