代码之家  ›  专栏  ›  技术社区  ›  Sergey Kolesnik

MS Word InsertBreak引发异常

  •  0
  • Sergey Kolesnik  · 技术社区  · 7 年前

    //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 回复  |  直到 7 年前
        1
  •  1
  •   Cindy Meister    7 年前

    如果没有办法让Word对象模型的这个部分的C++版本正确运行,你可以通过使用ANSI字符代码来插入某些类型的中断。(它们还可用于搜索/识别文档文本中的分隔符。)

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

    分节符

    为了插入分节符,可以使用 Sections.Add

    expression.Add(Range, Start)
    

    在哪里? expression 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.