Как извлечь данные, связанные с таблицей содержимого, из текстового документа, используя код VBA - PullRequest
0 голосов
/ 10 мая 2018

Как выполнить итерацию по каждому имени заголовка в (оглавлении) и извлечь связанный с ним контент данных (как текстовый, так и нетекстовый) из текстового документа с использованием VBA?

enter image description here

Например, рассмотрите прикрепленное изображение, как я смогу извлечь содержимое данных (стрелки указывают на требуемое 3 содержимого данных), соответствующее определенному названию заголовка "4.1.7.3 Описание ролей"?

На прилагаемом рисунке список заголовков (оглавление) отображается на левой панели, когда мы щелкаем по любому конкретному элементу toc, тогда соответствующие данные отображаются на правой панели / разделе.

В настоящее время я могу получить доступ к содержимому каждого заголовка с помощью приведенного ниже кода.

Пожалуйста, объясните мне, как извлечь связанный с ними контент данных (как текстовый, так и нетекстовый) с помощью кода VBA.

Sub Main()
        Dim strFile As String
        Dim oWord As Word.Application
        Dim oWdoc As Word.Document
        Dim oPar As Word.Paragraph
        Dim rng As Word.Range
        strFile = "C:\Users\SQVA\Desktop\My_Work\MyTest3.docx"
        'Set oWord = CreateObject("Word.Application")
        Set oWord = New Word.Application
        Set oWdoc = oWord.Documents.Open(strFile)
        Call Get_Heading_Name(oWord, oWdoc, strFile, rng)
        Call Close_Word(oWord, oWdoc)
    End Sub


 Sub Get_Heading_Name(oWord As Word.Application, oWdoc As Word.Document, strFile As String, rng As Word.Range)
    oWord.Visible = True
    Dim astrHeadings As Variant
    Dim strText As String
    Dim intItem As Integer
    Set rng = oWdoc.Content
    astrHeadings = _
    oWdoc.GetCrossReferenceItems(wdRefTypeHeading)
    For intItem = LBound(astrHeadings) To UBound(astrHeadings)
        strText = Trim$(astrHeadings(intItem))
            Debug.Print CStr(strText)
    Next intItem
End Sub

Sub Close_Word(oWord As Word.Application, oWdoc As Word.Document)
        oWdoc.Close SaveChanges:=wdDoNotSaveChanges
        oWord.Quit
        Set oWdoc = Nothing
        Set oWord = Nothing
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...