MS Word InsertBreak 抛出异常
MS Word InsertBreak throws exception
尝试使用参数(例如,wdPageBreak 或 wdLineBreak)通过范围插入中断时,出现错误 "Type mismatch"。不过没关系,给 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
如果无法使这部分 Word 对象模型的 C++ 版本正常运行,您可以通过使用 ANSI 字符代码插入某些类型的分隔符来解决这个问题。 (它们也可用于 search/identify 文档文本中的分隔符。)
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.
尝试使用参数(例如,wdPageBreak 或 wdLineBreak)通过范围插入中断时,出现错误 "Type mismatch"。不过没关系,给 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
如果无法使这部分 Word 对象模型的 C++ 版本正常运行,您可以通过使用 ANSI 字符代码插入某些类型的分隔符来解决这个问题。 (它们也可用于 search/identify 文档文本中的分隔符。)
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.