当尝试使用参数(例如wdPageBreak或wdLineBreak)通过Range插入InsertBreak时,出现错误“类型不匹配”。没关系,对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
答案 0 :(得分:1)
如果没有办法使Word对象模型的此部分的C ++版本正常运行,则可以通过使用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.