Скопируйте X количество слов в буфер обмена в слове с VBA

Мне нужен макрос слов, который выделяет первые 2500 слов, поэтому я могу позже скопировать их во внешнее приложение или скопировать эти 2500 слов в буфер обмена напрямую.

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

Любые идеи о том, как скопировать первое количество слов?

2 ответа

Вот небольшой пример этого:

Sub HighlightFirst2500()

 counter = 0
 For Each w In ThisDocument.Words
 If w Like "*[0-z]*" Then
 counter = counter + 1
 If counter >= 2500 Then
 Exit For
 End If
 End If
 If counter = 1 Then
 w.Select
 Else
 Selection.Extend
 End If
 w.HighlightColorIndex = wdYellow
 Next w

 Selection.Copy

 MsgBox "The first " & counter & " words were highlighted in yellow AND added to the clipboard!"

End Sub

Таким образом,

  1. Для каждого слова в этом документе
  2. Если он СМОТРЕТСЯ, как слово (или число), увеличивайте счетчик
  3. Выделите слово и добавьте его в выделение, даже если оно не похоже на слово
  4. Если счетчик нарушает ограничение, выйдите из цикла раньше
  5. Скопируйте все, что выбрано


Я вижу два варианта: 1 возьмет первые 2,500 слов и поместит их в строку для вас для последующего использования в коде, второй вариант просто выберет и скопирует первые 2500 слов

Sub PutInVariable()
Dim MyArr As Variant, MyString As String
MyArr = Split(ThisDocument.Content.Text, " ")
ReDim Preserve MyArr(2499)
MyString = Join(MyArr, " ")
End Sub


Sub SelectAndCopy()
Selection.HomeKey Unit:=wdLine
Selection.MoveRight Unit:=wdWord, Count:=2500, Extend:=wdExtend
Selection.Copy
End Sub

licensed under cc by-sa 3.0 with attribution.