Я учитель и создаю макрос для поиска типичных ошибок в работах моих студентов. Например, я строю макрос, чтобы искать слово "прибыль". Если он найден, он смотрит на предыдущее слово. Если это предыдущее слово не является "действующим", "грубым" или "чистым", я возвращаю комментарий студенту.

У меня есть несколько таких вещей. Однако, когда я читаю документ и смотрю на слово до или после нужного слова, цифры запутывают меня. Например, я хочу посмотреть, используют ли учащиеся "и", когда используют "между" (они часто ошибочно используют между / к или между / через). Таким образом, у меня есть макрос, чтобы найти слово "между", а затем посмотреть на следующие 2 слова, чтобы увидеть, есть ли среди них "и". Если нет, он возвращает комментарий.

Моя проблема в том, что если есть что-то вроде: между 52 миллионами и 64 миллионами долларов ... тогда, если заглянуть вперед на 2 слова, вы не найдете "и", потому что 52 доллара не читаются как одно слово. Должен ли я использовать что-то кроме слов, чтобы сделать это? Или есть способ прочитать число как слово (или текст)?

Вот мой код:

Dim doc As Document
Set doc = ActiveDocument
Dim k As Integer
Dim j As Integer
For k = 1 To doc.Words.Count - 3
  j = 0
    If Trim(doc.Words(k)) = "between" Then
    j = 1
    End If

    If Trim(doc.Words(k + 2)) = "and" Or Trim(doc.Words(k + 3)) = "and" Then
    j = 0
    End If

  If j = 1 Then
  ActiveDocument.Comments.Add range:=Selection.Document.Words(k), Text:="the word 'between' should be followed by 'and' such as: between $4 million and $6 million'."
  End If

Next

1 ответ1

1

Если определение word в VBA не соответствует вашей цели, вам нужно будет сделать это самостоятельно.

Вы можете прочитать и обработать весь текст документа. Вы можете избавиться от проблемных персонажей, просто удалив их. Затем вы будете использовать функцию Разделить, чтобы разделить документ.

Поскольку проблема заключается в том, что функция Split позволяет использовать только один символ в качестве разделителя, вы сталкиваетесь с заменой всех знаков препинания и специальных символов пробелами.

Другая проблема заключается в том, что функция Split обрабатывает два разделителя в строке или разделитель в начале или конце строки как окружение пустой строки (""). Так что нужно будет заменить все повторы заготовок одним пробелом.

Кроме того, вы можете использовать регулярные выражения, чтобы изолировать слова. См., Например, сообщение о переполнении стека. Возвращение соответствия регулярному выражению в VBA (Excel).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .