VB. net Word document: обновить номера разделов после добавления нового раздела - PullRequest
0 голосов
/ 20 апреля 2020

Я копирую раздел 8 документа word и вставляю его в конец раздела 8. После этого я заменяю некоторые слова в только что вставленном разделе. После этого я должен снова скопировать раздел 8 и вставить его в конец ранее вставленного раздела (т.е. раздел 9).

Проблема в том, что изначально у меня есть разделы до 10, когда я копирую и вставляю раздел 8 первый раз, он вставляется правильно, но когда я вставляю второй раз, он вставляется в 10-й раздел, а не в конец недавно вставленного раздела.

Ниже приведен мой код, я использую "goto", чтобы поместить курсор в конец раздела и увеличить номер раздела.

 Function copyPasteSectionInWord(copysectionnumber As String, PastelastOfThisSectionnumber As String)

    Dim sectionInFocus As Microsoft.Office.Interop.Word.Section
    Dim secRange As Microsoft.Office.Interop.Word.Range

    sectionInFocus = wordDoc.Sections.Item(copysectionnumber)
    secRange = sectionInFocus.Range
    secRange.Copy()

    wordApp.Selection.GoTo(What:=WdGoToItem.wdGoToSection, Which:=WdGoToDirection.wdGoToNext, Count:=PastelastOfThisSectionnumber)
    'secRange2.Collapse(Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseEnd)
    'secRange.Paste()
    wordApp.Selection.Paste()
    'wordDoc.Fields.Update()

    'secRange.Collapse(Microsoft.Office.Interop.Word.WdCollapseDirection.wdCollapseEnd)
    releaseObject(secRange)

1 Ответ

1 голос
/ 20 апреля 2020

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

Sub InsertSectionsandPopulateWithText()

    Dim myRange As Word.Range
    Set myRange = ActiveDocument.Sections.Item(8).Range
    myRange.Collapse direction:=wdCollapseEnd

    myRange.InsertBreak Type:=WdBreakType.wdSectionBreakNextPage
    myRange.InsertBreak Type:=WdBreakType.wdSectionBreakNextPage

    With ActiveDocument.Sections
        .Item(9).Range.FormattedText = .Item(8).Range.FormattedText
        .Item(10).Range.FormattedText = .Item(8).Range.FormattedText
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...