Не удается правильно прочитать документ Word в коллекцию - PullRequest
0 голосов
/ 05 марта 2019

У меня есть пользовательский объект (Item), и я пытаюсь перебрать документ, добавляя каждое предложение в документ как переменную Item и добавляя его в массив. Моя проблема в том, что последний элемент, который я прочитал, кажется, занимает все пространство в моем массиве Код ниже:

Sub Main()
'Count Variables
Dim i As Integer, j As Integer

'Variables
Dim My_Question As New Question
'Dim myexcel As Object
'Dim myWB As Object
'Dim ExcelMaster As String
Dim Found As Boolean

'Array declaration
Dim Q_Coll As New Collection
'Dim MasterCodes As New Collection

i = 1
'Reads in Items and store as item objects
'Storing in Array for later sorting
For i = 1 To 3
    My_Question.Stem = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "Stem: " & My_Question.Stem

    My_Question.A = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "A: " & My_Question.A

    My_Question.B = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "B: " & My_Question.B

    My_Question.C = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "C: " & My_Question.C

    My_Question.D = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "D: " & My_Question.D

    My_Question.Master = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "Master: "; My_Question.Master

    My_Question.ICS = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "ICS: " & My_Question.ICS

    My_Question.State = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "State: " & My_Question.State

    My_Question.Key = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "Key: " & My_Question.Key

    Q_Coll.Add Item:=My_Question
Next i

For i = 1 To 3
    Debug.Print Q_Coll(i).Stem
Next i
End Sub

Введите
Это контрольный вопрос?
(A) Ответ A
(B) Ответ B
(C) Ответ C
(D) Ответ D

Основной код: ABC12345
ICS: 1.A.1.A
Состояние: новый
Ключ: B

Это еще один вопрос для проверки?
(A) Ответ 1
(B) Ответ 2
(С) Ответ 3
(D) Ответ 4

Основной код: ABC54321
ICS: 1.B.1.C
Состояние: новый
Ключ:

Это последний тестовый вопрос?
(A) Ответ A1
(B) Ответ B2
(C) Ответ C3
(D) Ответ D4

Мастер-код: XYZ12345
ICS: 2.F.1.C
Состояние: используется
Ключ: D

Отладочный вывод Стебель: Это тестовый вопрос?

A: (A) Ответ A

B: (B) Ответ B

C: (C) Ответ C

D: (D) Ответ D

Мастер: Мастер код: ABC12345

ICS: ICS: 1.A.1.A

Состояние: Состояние: Новый

Ключ: Ключ: B

Стебель: Это еще один вопрос для проверки?

A: (A) Ответ 1

B: (B) Ответ 2

C: (C) Ответ 3

D: (D) Ответ 4

Мастер: мастер-код: ABC54321

ICS: ICS: 1.B.1.C

Состояние: Состояние: Новый

Ключ: Ключ: A

Стебель: Это последний тестовый вопрос?

A: (A) Ответ A1

B: (B) Ответ B2

C: (C) Ответ C3

D: (D) Ответ D4

Мастер: Мастер-код: XYZ12345

ICS: ICS: 2.F.1.C

Состояние: Состояние: используется

Ключ: Ключ: D

Это последний тестовый вопрос?

Это последний тестовый вопрос?

Это последний тестовый вопрос?

Я печатаю каждую строку, когда читаю ее, но окончательный вывод просто печатает последний элемент снова и снова.

1 Ответ

0 голосов
/ 06 марта 2019

Нашел проблему. Замена определения «Вопрос» в верхней части кода на «Dim My_Question As Question», а затем установка в начале цикла for «Set My_Question = New Question», кажется, исправляет вывод. Код ниже:

Sub Main()
'Count Variables
Dim i As Integer, j As Integer

'Variables
Dim My_Question As Question
Dim Found As Boolean

'Collection declaration
Dim Q_Coll As New Collection

i = 1
'Reads in Items and store as item objects
'Storing in Collection for later sorting
For i = 1 To 15
    Set My_Question = New Question
    My_Question.Stem = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "Stem: " & My_Question.Stem

    My_Question.A = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "A: " & My_Question.A

    My_Question.B = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "B: " & My_Question.B

    My_Question.C = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "C: " & My_Question.C

    My_Question.D = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "D: " & My_Question.D

    My_Question.Master = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "Master: "; My_Question.Master

    My_Question.ICS = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "ICS: " & My_Question.ICS

    My_Question.State = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "State: " & My_Question.State

    My_Question.Key = Selection.Sentences(1).Text
    Selection.Sentences(1).Delete
    Debug.Print "Key: " & My_Question.Key

    Q_Coll.Add Item:=My_Question
Next i

For i = 1 To 15
    Debug.Print Q_Coll(i).Stem
Next i
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...