Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2010, 17:47   #1
Fiesta200
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 35
По умолчанию Верен ли подсчет

Если поискать на форуме, не одна тема была посвящена подсчету слов, букв, разделению анг. и русских букв и под.
Я, правда, не нашел, как можна провестити статистику документа на слова, если в нем присутствуют надписи. Мне часто приходится именно такие документы делать, а вот как потом калькулировать свою работу - не знаю.
Вернее, знаю. Надо все надписи преобразовать по одной в рамку, чтобы текст стал понятен Ворду.

Возможно, есть алогоритмы для подсчета в таких случаях?

В нете есть развеселенька програ FineCount 2.6, но понять правидивость ее подсчета я не могу.
На малых докуметах все гуд (например, количество слов в предложении "Мама мыла раму"). Когда же открыть большой док, то не совпадает ворд и файнкаунт. Даже если там нет ни одной надписи. Как это так? Другие алгоритмы подсчета?

Можна ли провести статистику полностью всего, что есть в доке, на предмет слов с помощью VB?
Fiesta200 вне форума Ответить с цитированием
Старый 22.06.2010, 19:15   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Я не знаю, как считает FineCount, но сделать можно, считая слова везде: в колонтитулах, сносках, надписях, где бы они не находились.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 22.06.2010, 23:48   #3
Fiesta200
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 35
По умолчанию

Да, я о колонтитулах не подумал. Они ведь также текст

А что считать тогда словом? Любой знак размером в одну букву, после которого («я ») стоит пробел. Или перед котороым (« я.»). По идее, и одно, и другое. Также после слова может стоять абзац, разрыв, картинка, формула, а спереди вообще не быть пробела.
Словами могут быть и цифры, хотя это звучит кощунственно.
Fiesta200 вне форума Ответить с цитированием
Старый 23.06.2010, 09:39   #4
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Вот именно: что считать словом? Например, при просмотре статистики показывает 120 слов, а если искать слова с помощью подстановочных знаков <[А-яЁё]@>, то получается на четыре слова больше, т.к. части слов, написанных через дефис, воспринимаются как два слова: что-нибудь, экспресс-стиль и т.п. Поэтому при подсчёте нужно пользоваться не поиском или перебором коллекции Words, а методом ComputeStatistics объекта Range. И, по-моему, я такие программы уже видел
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 24.06.2010, 03:50   #5
Fiesta200
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 35
По умолчанию

Я подумал, что слова, которые пишуться через дефис, надо считать одним словом. Логика подсказывает так.
Хотя тут также нет общего знаменателя. Например, «смотри-ка» — одно слово, а «родина-мать» — уже два.
Слова, написаные через косой слеш, надо считать за два отдельных слова «ж/д»?

Последний раз редактировалось Fiesta200; 24.06.2010 в 03:55.
Fiesta200 вне форума Ответить с цитированием
Старый 24.06.2010, 05:05   #6
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Так а сами не вправе решить?
Цитата:
Сообщение от Fiesta200 Посмотреть сообщение
Мне часто приходится именно такие документы делать, а вот как потом калькулировать свою работу - не знаю.
Цитата:
Сообщение от http://slovari.yandex.ru/dict/bse/article/00072/04200.htm?text=%D1%81%D0%BB%D0%BE%D 0%B2%D0%BE&stpar3=1.1
Трудности определения единых критериев выделения для слов всех языков побуждают лингвистов пересматривать взгляды на слово как на структурно-семантическую единицу языка. При этом одни учёные определяют слово в чисто формальном плане как отрезок речевой цепи между паузами или текста между пробелами...
Всё равно же работодатель считает по-своему!
Sasha_Smirnov вне форума Ответить с цитированием
Старый 24.06.2010, 13:09   #7
Fiesta200
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Всё равно же работодатель считает по-своему!
Оно, конечно, да. Но хотелось бы и себя не обделить, внося в общую
статистику предложения или просто слова, которые покоятся в Надписях
Fiesta200 вне форума Ответить с цитированием
Старый 24.06.2010, 16:05   #8
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Хочу предупредить, что выражение "мама, которая зачем-то мыла раму!" Word посчитает как 9 (девять!) слов - знаки препинания Word'ом воспринимаются как "слова" (объект типа Words)
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 24.06.2010, 16:55   #9
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Цитата:
Сообщение от Skif-F Посмотреть сообщение
Хочу предупредить…
Я об этом уже предупреждал между строк в 4-м сообщении . Нужно пользоваться ComputeStatistics, перебирая каждый элемент документа, где может находиться текст. Примерно таким образом:
Код:
Sub Stories()
  Dim oStRng As Range
  For Each oStRng In StoryRanges
    Select Case oStRng.StoryType
      Case wdCommentsStory 'Примечания
        '…
      Case wdEndnoteContinuationNoticeStory 'Продолжение концевых сносок
        '…
      Case wdEndnoteContinuationSeparatorStory 'Разделитель продолжения концевых сносок
        '…
      Case wdEndnoteSeparatorStory 'Разделитель концевых сносок
        '…
      Case wdEndnotesStory 'Концевые сноски
        '…
      Case wdEvenPagesFooterStory 'Нижний колонтитул чётных страниц
        '…
      Case wdEvenPagesHeaderStory 'Верхний колонтитул чётных страниц
        '…
      Case wdFirstPageFooterStory 'Нижний колонтитул первой страницы
        '…
      Case wdFirstPageHeaderStory 'Верхний колонтитул первой страницы
        '…
      Case wdFootnoteContinuationNoticeStory 'Продолжение сносок
        '…
      Case wdFootnoteContinuationSeparatorStory 'Разделитель продолжения сносок
        '…
      Case wdFootnoteSeparatorStoryк 'Разделитель сносок
        '…
      Case wdFootnotesStory 'Сноски
        '…
      Case wdMainTextStory 'Основной текст
        '…
      Case wdPrimaryFooterStory 'Нижний колонтитул
        '…
      Case wdPrimaryHeaderStory 'Верхний колонтитул
        '…
      Case wdTextFrameStory 'Текст в  рамках
    End Select
  Next
End Sub
ну и не забывать, что в каждом таком диапазоне могут быть фигуры с текстом, к тому же вложенные друг в друга. Ну и WordArt ещё никто не отменил
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 24.06.2010, 21:27   #10
Fiesta200
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 35
По умолчанию

Это пример макроса или полный? Если второй ответ, то - выдает ошибку '424'. Кажись, в рядке:
For Each oStRng In StoryRanges
Fiesta200 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет ячеек olka1081989 Microsoft Office Excel 3 26.05.2010 15:46
Подсчет слов(Си) Bl@st Помощь студентам 18 21.12.2009 23:45
Статистический подсчет. Reecon Microsoft Office Excel 8 23.04.2009 13:53
Подсчет суммы Kardi PHP 0 23.11.2008 16:46
Подсчет r2n Общие вопросы Delphi 4 01.05.2007 05:48