Количество слов в верхних и нижних колонтитулах (Microsoft Word)
Кейт нужно подсчитать количество слов только для верхних и нижних колонтитулов документа, и она не знает, как это сделать.
Нет автоматического способа сделать это, но вы можете разработать макрос, который вычислит количество. VBA позволяет легко перемещаться по заголовкам в каждом разделе документа, а затем вы можете определить, сколько слов в каждом заголовке. Один из подходов — использовать макрос, подобный следующему:
Sub CntHeaderWords() Dim s As Section Dim h As HeaderFooter Dim sRaw As String Dim Cnt As Long Dim J As Integer Cnt = 0 For Each s In ActiveDocument.Sections For Each h In s.Headers For J = 1 To h.Range.Words.Count sRaw = h.Range.Words(J) sRaw = Trim(sRaw) If sRaw = vbCrLf Then sRaw = "" If sRaw = vbCr Then sRaw = "" If sRaw = vbLf Then sRaw = "" If Len(sRaw) > 0 Then Cnt = Cnt + 1 Next J Next h Next s MsgBox Cnt & " words in headers" End Sub
Когда вы запускаете этот макрос, он проходит по каждому разделу документа, а затем по каждому заголовку в этом разделе. Количество слов определяется для каждого заголовка и добавляется к переменной Cnt. Когда макрос завершен, он отображает количество слов для заголовков документа.
В этом макросе есть несколько интересных моментов.
Во-первых, поскольку вы можете определить свойство Count для коллекции Words для каждого заголовка, вы можете подумать, что можете просто сложить все эти значения вместе, чтобы определить общее количество слов. Проблема в том, что даже если для раздела нет заголовка, Word возвращает количество слов 1 для «подразумеваемого» заголовка. Вот почему макрос фактически проверяет каждое слово в заголовке, и если это не что иное, как возврат каретки или перевод строки, то оно не включается в подсчет.
Также следует отметить, что если в заголовке есть знаки препинания, каждый знак препинания считается словом. Например, если у вас есть заголовок «Все права защищены», Word считает, что это три слова. Если в заголовке указано «Все права защищены». (с точкой в конце), Word считает, что это четыре слова. В результате, если вы думаете, что в ваших заголовках могут быть знаки препинания, то вы можете изменить код макроса, чтобы знаки препинания не учитывались.
Этот макрос возвращает только количество слов для заголовков в документе. Если вместо этого вы хотите, чтобы количество слов было как для верхних, так и для нижних колонтитулов, вы можете настроить макрос следующим образом:
Sub CntHFWords() Dim s As Section Dim h As HeaderFooter Dim f As HeaderFooter Dim sRaw As String Dim HdCnt As Long Dim FtCnt As Long Dim J As Integer HdCnt = 0 FtCnt = 0 For Each s In ActiveDocument.Sections For Each h In s.Headers For J = 1 To h.Range.Words.Count sRaw = h.Range.Words(J) sRaw = Trim(sRaw) If sRaw = vbCrLf Then sRaw = "" If sRaw = vbCr Then sRaw = "" If sRaw = vbLf Then sRaw = "" If Len(sRaw) > 0 Then HdCnt = HdCnt + 1 Next J Next h For Each f In s.Footers For J = 1 To f.Range.Words.Count sRaw = f.Range.Words(J) sRaw = Trim(sRaw) If sRaw = vbCrLf Then sRaw = "" If sRaw = vbCr Then sRaw = "" If sRaw = vbLf Then sRaw = "" If Len(sRaw) > 0 Then FtCnt = FtCnt + 1 Next J Next f Next s sRaw = "Header words: " & HdCnt & vbCrLf sRaw = sRaw & "Footer words: " & FtCnt & vbCrLf sRaw = sRaw & "Total words: " & HdCnt + FtCnt MsgBox sRaw End Sub
В этой версии макроса к каждому нижнему колонтитулу применяется тот же метод подсчета, что и к каждому заголовку, отображая индивидуальный и общий счетчики в конце макроса.
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (10285) относится к Microsoft Word 2007, 2010 и 2013.