Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Вставка в документ количества рисунков, таблиц, формул и других именованных объектов


Вставка в документ количества рисунков, таблиц, формул и других именованных объектов без помощи макросов

Мне задали вопрос:

Есть ли Word-2007 поле которое будет показывать количество рисунков в файле и поле показывающее количество таблиц.
Как это делает поле {NUMPAGES} показывая количество страниц.

Я задумался. Действительно, если человек нумерует рисунки, то почему нельзя узнать количество таких рисунков без использования макросов? Я нашёл решение с использованием полей. Приведенное поле нужно вставить в самый конец документа, чтобы оно правильно вело подсчёт:

{ SET ImagesCount { = { SEQ Формула } - 1 } }

Это поле формирует закладку с именем ImagesCount и записывает в неё последнее значение последовательности с идентификатором «Рисунок». Имя для закладки можно выбирать любое. Главное, чтобы оно было осмысленными.

Теперь, чтобы вставить в нужное место документа количество рисунков, нужно просто добавить перёкрёстную ссылку на эту закладку. Это можно сделать или через меню, или введя поле вручную:

{ REF ImagesCount \* MERGEFORMAT }

Этот метод имеет один недостаток: если в документе не сквозная нумерация рисунков и зависит от заголовков первого уровня, то в закладку будет записано только количество рисунков в последнем разделе. Думаю, что эту задачу, тоже можно решить.

 Количество таблиц и формул вставляется аналогично: идентификаторы «Таблица» и «Формула» соответственно.

Подсчёт количества гласных в строке

Поэт Геннадий Вершинин задал вопрос:
Подскажите можно ли придумать макрос для Word 2007. Мне нужно чтобы в таблице при написании стихов автоматически считались гласные буквы в строке для стиха. Я пишу стихи в вордовских таблицах. Так удобнее считать гласные чтобы выдержать ритм.
Что ж, это можно сделать и очень несложно:
1 Sub VowelsSum() 2 Const Vowels = "аеёиоуыэюя" 3 Dim nVowelsSum As Integer 4 Dim sTemp As String 5 Dim i As Integer 6 For i = 1 To Len(Vowels) 7 sTemp = Replace(Selection.Text, Mid(Vowels, i, 1), "", , , vbTextCompare) 8 nVowelsSum = nVowelsSum + Len(Selection.Text) - Len(sTemp) 9 Next 10 Application.StatusBar = nVowelsSum & " гласных" 11 End Sub
Количество гласных букв будет показано в статусной строке.

Удаление дефисов из слов с ошибками

Денис интересуется:
Здравствуйте! Посоветуйте, можно ли наладить поиск и замену в такой ситуации: большой текст, порядка 2 тыс. страниц, где много слов, разделенных дефисом. Естественно есть слова, которые в принципе пишутся через дефис. Можно ли к поиску дефисов в словах подключить проверку грамматики. Другими словами, искать дефис в слове, проверять, не отмечен ли как ошибка, и если отмечен, дефис удалять.
Такой простой макрос решает эту задачу, удаляя дефис из слова с ошибкой:
1 Sub DeleteErrorDashes() 2 With ActiveDocument.Range.Find 3 'Ищем слово, разделённое дефисом 4 .Text = "<[А-яЁё]@-[А-яЁё]@>" 5 .MatchWildcards = True 6 While .Execute 7 'Если в слове есть ошибка 8 If .Parent.SpellingErrors.Count > 0 Then 9 'Удаляем из него дефис 10 .Parent.Text = Replace(.Parent.Text, "-", "") 11 End If 12 Wend 13 End With 14 End Sub

В избранное