Я новичок в VBA и пытаюсь создать массив из 400-страничного документа в формате VBA из содержимого главы.Каждый элемент массива должен содержать все абзацы после полужирного заголовка главы до следующего заголовка главы.Это может быть лучше сформулировано как информация между заголовками глав.
Заголовок главы - это предложение, которое всегда выделено жирным шрифтом (и единственная часть документа, которая выделена жирным шрифтом).Информация, следующая за описанием главы, может иметь несколько абзацев и маркированную информацию, но в некоторых случаях она также может быть полностью пустой.В случае с пустым содержимым главы я хотел бы сохранить пустую запись какого-либо вида.
Мне удалось создать массив, каждый абзац которого был бы элементом массива.Однако, поскольку в каждой главе иногда имеется несколько абзацев и маркированных разделов, количество элементов в массиве превышает количество глав.Массив также хранит заголовки глав как их собственный элемент (я разобрался, как удалить заголовки из массива с помощью аналогичных сравнений).Я немного растерялся после того, как исследовал эту тему в течение нескольких часов сегодня.
Какой был бы способ хранения всей информации между «полужирными заголовками глав» в качестве элемента в массиве?
Большое спасибо за вашу помощь!
Sub addUnderlinedWordsToArray()
On Error GoTo errhand:
Dim myWords() As String
Dim i As Long
Dim myDoc As Document: Set myDoc = ActiveDocument ' Change as needed
Dim aRange As Range: Set aRange = myDoc.Content
Dim sRanges As StoryRanges: Set sRanges = myDoc.StoryRanges
Dim ArrayCounter As Long: ArrayCounter = 0 ' counter for items added to the array
Dim Sentence As Range
Dim Paragraph As Range
Dim w As Variant
Dim myDescs() As String
Dim x As Variant
Application.ScreenUpdating = False
ReDim myWords(aRange.Words.Count) ' set a array as large as the
' number of words in the doc
For Each Paragraph In ActiveDocument.StoryRanges
For Each w In ActiveDocument.Paragraphs
myWords(ArrayCounter) = w
ArrayCounter = ArrayCounter + 1
Next
Next
On Error GoTo 0
Set myDoc = Nothing
Set aRange = Nothing
Set sRanges = Nothing
Set Ex0 = New Excel.Application
Set Wb0 = Ex0.Workbooks.Add
Ex0.Visible = True
Wb0.Sheets(1).Range("A1").Resize(UBound(myWords) + 1, 1) = WorksheetFunction.Transpose(myWords)
Application.ScreenUpdating = True
Debug.Print UBound(myWords())
Exit Sub
errhand:
Application.ScreenUpdating = True
MsgBox "An unexpected error has occurred." _
& vbCrLf & "Please note and report the following information." _
& vbCrLf & "Subroutine Name: addUnderlinedWordsToArray" _
& vbCrLf & "Error Number: " & Err.Number _
& vbCrLf & "Error Description: " & Err.Description _
, vbCritical, "Error!"
End Sub