Если у вас есть документ, который включает текст в различных текстовых полях, вы должны понимать, что при подсчете слов Word не включает слова из текстовых полей в возвращаемое количество слов. Если вы хотите знать только количество слов в текстовом поле, есть способ обойти это:

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

Однако есть один момент, когда метод выбора до подсчета не работает. Если у вас есть несколько текстовых полей, содержащих слова, и эти текстовые поля сгруппированы, функция подсчета слов не распознает их как «счетные», если вы выберете группу. Другими словами, чтобы подсчитать символы в текстовых полях, составляющих группу, вы должны сначала разгруппировать группу, а затем подсчитать каждое текстовое поле.

Очевидно, делать это снова и снова может утомительно. Один из способов обойти это — использовать макрос, который выполняет те же действия за вас.

Следующий макрос TextBoxCount проходит через все фигуры в вашем документе. Если они сгруппированы, они автоматически разгруппируются. Затем он выполняет подсчет слов для каждого текстового поля и возвращает диалоговое окно, в котором указывается количество слов и символов в текстовых полях (вместе) и количество слов и символов во всем документе, включая текстовые поля.

Sub TextBoxCount()

Dim lngTBWords As Long     Dim lngTBChars As Long     Dim lngDocWords As Long     Dim lngDocChars As Long     Dim shpTemp As Shape     Dim wcTemp As Dialog     Dim bDone As Boolean

Application.ScreenUpdating = False

Do         bDone = True         For Each shpTemp In ActiveDocument.Shapes             If shpTemp.Type = msoGroup Then                 shpTemp.Ungroup                 bDone = False             End If         Next shpTemp     Loop Until bDone

'Get count in main document     Selection.HomeKey Unit:=wdStory     Set wcTemp = Dialogs(wdDialogToolsWordCount)

wcTemp.Update     wcTemp.Execute     lngDocWords = wcTemp.Words     lngDocChars = wcTemp.Characters

'Step through shapes and add counts     lngTBWords = 0     lngTBChars = 0     For Each shpTemp In ActiveDocument.Shapes         shpTemp.Select         wcTemp.Execute         lngTBWords = lngTBWords + wcTemp.Words         lngTBChars = lngTBChars + wcTemp.Characters     Next shpTemp     lngDocWords = lngDocWords + lngTBWords     lngDocChars = lngDocChars + lngTBChars

Application.ScreenUpdating = True     MsgBox Str(ActiveDocument.Shapes.Count) _       & " text boxes found with" & vbCr _       & Str(lngTBWords) & " word(s) and" & vbCr _       & Str(lngTBChars) & " characters" & vbCr & vbCr _       & " In the total document there are" & vbCr _       & Str(lngDocWords) & " word(s) and" & vbCr _       & Str(lngDocChars) & " characters"

End Sub

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

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (1839) применим к Microsoft Word 97, 2000, 2002 и 2003.