MS Word InsertBreak выбрасывает исключение - PullRequest
0 голосов
/ 14 сентября 2018

Я получаю сообщение об ошибке "Несоответствие типов" при попытке вставитьBreak через Range с использованием параметров (например, wdPageBreak или wdLineBreak).Но это нормально, для InsertBreak без параметров.Я единственный, кто получает такое поведение, или это еще одна ошибка Word API?

//MS Word VBA Reference
Set myRange = ActiveDocument.Paragraphs(2).Range 
With myRange 
 .Collapse Direction:=wdCollapseEnd 
 .InsertBreak Type:=wdPageBreak 
End With

//c++ code
HRESULT hr = pWordDoc->GetParagraphs()->Item(1)->GetRange()->
        InsertBreak(&variant_t(Word::wdPageBreak));  //hr = 0x80020005 TypeMismatch
hr = pWordDoc->GetParagraphs()->Item(1)->GetRange()->
            InsertBreak(&vtMissing);                 // hr = S_OK

1 Ответ

0 голосов
/ 19 сентября 2018

Если нет способа заставить C ++ версию этой части объектной модели Word функционировать правильно, вы можете обойти ее, используя коды символов ANSI для вставки определенных видов разрывов.(Их также можно использовать для поиска / идентификации разрывов в тексте документа.)

Page break:      ANSI 12 (= press Ctrl+Enter)
Line break:      ANSI 11 (= press Shift+Enter)
Paragraph break: ANSI 13 (= press Enter)

Обратите внимание, что ANSI 12 также является кодом символов для различных типов разрыв раздела ;по умолчанию используется разрыв страницы, поэтому вы можете вставлять код ANSI, если разрыв страницы соответствует желаемому.

Чтобы вставить разрыв раздела, можно использовать метод Sections.Add.Это принимает параметры, указывающие, где в документе должен быть разрыв раздела и какого типа.Подпись метода:

expression.Add(Range, Start)

Где expression - это переменная, представляющая коллекцию Sections.(wordDoc.Sections.Add например)

Допустимые значения для Start получены из перечисления WdSectionStart:

wdSectionContinuous 0 Continuous section break. 
wdSectionEvenPage   3 Even pages section break. 
wdSectionNewColumn  1 New column section break. 
wdSectionNewPage    2 New page section break. 
wdSectionOddPage    4 Odd pages section break. 
...