2016-09-13 3 views
1

я получил интересную проблему при использовании Ole-автоматизации для вставки содержимого в существующие документы Word, используя такой код:WORD OLE ТОС

WordApp.Selection.HomeKey(unit := wdStory); 
if FileExists(s) then 
    WordApp.Selection.InsertFile(Filename := s, ConfirmConversions := false, 
    Link := false, Attachment := false); 

Это достаточно хорошо работает с большинством словесных документов, за исключением тех, где мы получил «автоматическую таблицу содержимого» в качестве первого элемента в документе. В этом случае происходит сбой автоматизации с:

Это действие не распространяется за пределами уровня блока XML

Я пробовал некоторые другие функции, такие как:

WordApp.Selection.InsertText('Test')/(#13#10) 
WordApp.Selection.InsertBreak(Page/Line) 

с тем же отрицательным результат. Кажется, что позиция курсора неверна, когда первый элемент является автоматической таблицей.

Любые идеи, как я могу исправить это на моей стороне?

ответ

1

Необходимо, чтобы содержимое было вставлено в самом начале документа и, что первый абзац не содержит элемент управления содержимым (предмет, окружающий ToC).

Домашний ключ не всегда доводит вас до самого начала. В случае оглавления в начале документа нажатие на домашний ключ приведет вас к началу элемента управления содержимым, содержащего оглавление. Для того, чтобы получить перед вы можете установить свойство EndStart) в Selection 0. Кроме того, вы должны вставить абзац перед таблицей содержания:

WordApp.Selection.Start = 0 
WordApp.Selection.End = 0 
WordApp.Selection.InsertParagraphBefore 
+0

Я попытался это, не лучшего результата (начало/конец - 0 после ключевого слова). – Sillicoid

+0

Но работает это код, как это (я не очень нравится, что - и добавил файл «внутри» ТОС таким образом: попробовать <вставить, как и раньше> кроме <набора выбора старта/конца 1/1 > конец – Sillicoid

+0

Большое вам спасибо, с InsertParagraphBefore он отлично работает! – Sillicoid

Смежные вопросы