Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
29.03.2024, 17:07:54

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 233 Сообщений в 5 454 Тем от 6 753 Пользователей
Последний пользователь: malanik777
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Word и VBA
| | |-+  количество слов в строке
Страниц: 1 2 [Все]   Вниз
Печать
Автор Тема: количество слов в строке  (Прочитано 14615 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Thender
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 15


Просмотр профиля E-mail
« : 16.03.2016, 00:35:42 »

как узнать количество слов в строке?
я в определённом месте документа вставляю текст:
ActiveDocument.Words(count).add(строка1)  мне нужно узнать из скольких слов состроит строка1.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 16.03.2016, 12:38:57 »

В таком контексте, наверное, никак. Разве у объекта words есть свойство Add? Что вообще сделать пытаетесь?
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Thender
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 15


Просмотр профиля E-mail
« Ответ #2 : 16.03.2016, 21:29:40 »

да действительно что-то я напутал, вставка осуществляется так:
Application.ActiveDocument.Words(t).InsertAfter (характеристика + Chr(13))
где характеристика - это строка  типа:  "ЕхКЗ 2А 161609 (23/13) -А(1М20)-С(1М20m15)",
документ выглядит примерно так:
текст1: характеристика
текст2

собственно я удаляю все слова после текста1 пока не дойду до слова текст2 затем вставляю строку с новой характеристикой после текст1, так как в самом конце документа тоже нужно сделать правки, то что бы время от времени не вываливалась ошибка про несуществующее семейство( не помню как точно звучит), я хочу узнать на сколько слов изменяется размер документа, Application.ActiveDocument.Words.count использовать не очень хочется так как она реально долго подсчитывает слова.
если нет возможности посчитать количество слов то буду пробовать изменить  документ сначала в конце а уж потом в этом месте (но это решение пришло ко мне гораздо позже проблемы).
« Последнее редактирование: 16.03.2016, 21:32:38 от Thender » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #3 : 16.03.2016, 22:05:57 »

1. Для замен лучше использовать Find.Replace. Тогда не надо будет морочиться с определением позиций где дальше менять.
2. Конец документа хорошо определяется через ActiveDocument.Range.Characters.Count. Почему Вы решили считать именно слова не очень понимаю.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Thender
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 15


Просмотр профиля E-mail
« Ответ #4 : 16.03.2016, 23:05:23 »

так насколько я понимаю нужно знать что искать при использовании Find.Replase, а у меня там может быть любая строка, решил перебирать слова - потому что когда я начинал писать скрипт мне показалось это очень удобным способом, а перебирать символы и составлять из них слова  удобнее? я в VBA профан, если предложите способ проще то готов выслушать. в принципе скрипт в данный момент работает и сбоев не наблюдается, но хочется что бы он гарантированно работал стабильно.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #5 : 16.03.2016, 23:25:08 »

Ну Вы же знаете, что всегда идут слова: "характеристика" & Chr(13)? Ведь от них отталкиваетесь?
Будет куда проще понять, если Вы приложите пример файла того, что есть и что из этого надо получить.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Thender
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 15


Просмотр профиля E-mail
« Ответ #6 : 17.03.2016, 12:27:04 »

Нет как раз характеристика это переменная типа string ( Dim характеристика As String )
100% я знаю как выглядит текст1 и текст2  а между  некоторый текст похожий на "ЕхКЗ 2А 161609 (23/13) -А(1М20)-С(1М20m15)"
« Последнее редактирование: 17.03.2016, 12:31:19 от Thender » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #7 : 17.03.2016, 12:37:53 »

Так можно же применять знаки подстановки, вроде звездочки:
текст1 & "*" & текст2
его заменить на
текст1 & "новый текст" & текст2
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Thender
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 15


Просмотр профиля E-mail
« Ответ #8 : 17.03.2016, 12:41:51 »

Неплохо,но это не даст ответ на вопрос насколько слов увеличился документ
за такой совет я бы даже 2 плюса поставил.
буду пробовать
« Последнее редактирование: 17.03.2016, 12:44:07 от Thender » Записан
Surrogate
Пользователь
**

Репутация: +6/-0
Офлайн Офлайн

Сообщений: 94



Просмотр профиля WWW
« Ответ #9 : 17.03.2016, 12:44:55 »

а такой вариант
Код: (vb)
LEN(текст1 & "новый текст" & текст2)
Записан

RAN
Эксперты
Старожил
*

Репутация: +43/-0
Офлайн Офлайн

Сообщений: 440



Просмотр профиля E-mail
« Ответ #10 : 17.03.2016, 22:47:24 »

насколько слов увеличился документ
Код: (vb)
Sub qq()
    Dim x&, xx&
    x = ActiveDocument.Words.Count
    ActiveDocument.Bookmarks("ww").Range = "раз два три"
    xx = ActiveDocument.Words.Count
    MsgBox "Добавлено" & xx - x & "слов"
End Sub
Записан

А что ты умеешь?
Учиться...
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #11 : 18.03.2016, 08:58:55 »

но это не даст ответ на вопрос
Что был правильный ответ - нужен правильный вопрос Улыбка
Задача вроде была иная:
так как в самом конце документа тоже нужно сделать правки
найти конец документа и посчитать слова - задачи разные. Если у Вас задача слова считать, а не правильно изменения вносить - дело Ваше...
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Thender
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 15


Просмотр профиля E-mail
« Ответ #12 : 18.03.2016, 16:41:19 »

Спасибо за ответ!
RAN - Это именно то что мне нужно было
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #13 : 18.03.2016, 19:44:18 »

 ШокированА как же:
Application.ActiveDocument.Words.count использовать не очень хочется так как она реально долго подсчитывает слова
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Thender
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 15


Просмотр профиля E-mail
« Ответ #14 : 23.03.2016, 20:54:35 »

да согласен с вашим замечанием не заметил от радости Application.ActiveDocument.Words.count
Записан
magazine
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 1

ЗАБАНЕН!
Просмотр профиля E-mail
« Ответ #15 : 19.08.2016, 17:31:35 »

Всем добра
« Последнее редактирование: 19.08.2016, 17:38:19 от The_Prist » Записан
Страниц: 1 2 [Все]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru