VBA - Слово меняет понятие слова (a.b одно слово или два) - PullRequest
0 голосов
/ 31 октября 2018

У меня есть вопрос: я хочу иметь массив слов документа WORD, который больше 29 и короче 40 символов. Я реализовал это в VBA следующим образом:

Sub function()

    Dim arr(1000) As String
    counter = 0

    For Each sentence In ActiveDocument.StoryRanges
        For Each w In sentence.Words
            If Len(w) > 28 And Len(w) < 40 Then
                arr(counter) = w
                counter = counter + 1
            End If
        Next
    Next

End Sub

Проблема в том, что я хочу, чтобы все слова с символом '_' рассматривались как одно слово; например: «Adrian_link_mart» - это одно слово, а не 3: «Adrian», «link» и «mart», как это будет считаться

спасибо за вашу помощь, Адриан

1 Ответ

0 голосов
/ 31 октября 2018

Это может помочь. Как вы увидите ниже, есть небольшая морщинка.

Option explicit

Sub test()

' Use a collection rather than an array as we don't need
' to know the size in advance
Dim word_array              As Collection
' Word doesn't actually have a  'word' object. Probably because
' that clashes with Word the application.  So instead of Word.Word
' we are using word.range which gives us all the utility we will
' need
Dim my_word_range           As Word.Range
Dim my_range                As Word.Range

    For Each my_range In ActiveDocument.StoryRanges
        For Each my_word_range In my_range.Words
            With my_word_range
                Do While .Next(unit:=wdCharacter) = "_"
                    ' '_' is considered to be a word  by Word so we need to
                    ' count two Word words to get to the end of the next
                    ' text word IYSWIM
                    .MoveEnd unit:=wdWord, Count:=2

                Loop

                If .Characters.Count > 28 And .Characters.Count < 40 Then
                    word_array.Add Item:=.Text

                End If

            End With

        Next

    Next

End Sub

Если вы новичок в VBA, тогда

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

  2. В интегрированной среде разработки VBA перейдите в раздел «Настройки Tools.Option.Editor.Code» и убедитесь, что отмечен каждый флажок.

  3. Узнайте, как использовать F1. В VBA IDE, наведя курсор на ключевое слово и нажав F1, откроется страница справки MS для этого ключевого слова

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