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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2013, 11:31   #1
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
Восклицание нужна помощь

писал ранее, но никто не помог! вот упрощенный вопрос:
Текст макроса:
Код:
Sub proba1()
Dim Счетчик As Long
Счетчик = 0
With ActiveDocument.Range.Find
.Text = "<[0-9]@>{2;}"
.Replacement.Text = ""
.Forward = True
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
Do While (.Execute = True)
     Счетчик = Счетчик + 1
  Loop
End With
MsgBox ("Найдено " & Счетчик & " чисел в тексте")
End Sub
необходимо считать все числа в тексте, но если число 2-х значное, 3-х и т.д., то все равно считать за 1 число! + теперь надо учитывать одинаковые числа как 1!
как я понял необходимо переделать эту строку .Text = "<[0-9]@>{2;}" , но я без понятия как. помогите пожалуйста!
или тут закончились люди знающие язык VBA при создании макросов в Worde!

Последний раз редактировалось Stilet; 27.11.2013 в 12:58.
wander_vafl9 вне форума Ответить с цитированием
Старый 27.11.2013, 12:14   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

Цитата:
необходимо считать все числа в тексте, но если число 2-х значное, 3-х и т.д., то все равно считать за 1 число! + теперь надо учитывать одинаковые числа как 1!
2 ииииииии 22 иииииииииии 2 ооооооооо 2222 оооооооо

====
какой ответ
1зн-1 число, 2 повтора
2зн-1 число
4зн-1 число

или всего=3 уникальных
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание

Последний раз редактировалось shanemac51; 27.11.2013 в 12:17.
shanemac51 вне форума Ответить с цитированием
Старый 27.11.2013, 13:52   #3
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
Сообщение

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
2 ииииииии 22 иииииииииии 2 ооооооооо 2222 оооооооо

====
какой ответ
1зн-1 число, 2 повтора
2зн-1 число
4зн-1 число

или всего=3 уникальных
1 2 2 234 222 345 234
выведет сообщение, что чисел 5, т.е. не будет учитывать повторы за число!
wander_vafl9 вне форума Ответить с цитированием
Старый 27.11.2013, 14:35   #4
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

может этот вариант подойдет
Код:
Sub w131127_1426()
Dim w1 As Object
Dim ss, s1, s2
For Each w1 In Word.ActiveDocument.Words

s2 = " " & Trim(w1.Text) & " "
If InStr(ss, s2) = 0 Then
If s2 Like " [0-9]* " Then

Debug.Print "="; s2; "=";
ss = ss & s2
End If
End If
Next w1
Word.Documents.Add
Word.ActiveDocument.Paragraphs(1).Range.Text = Replace(ss, "  ", " ")
End Sub
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 27.11.2013, 14:58   #5
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
Радость

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
может этот вариант подойдет
Код:
Sub w131127_1426()
Dim w1 As Object
Dim ss, s1, s2
For Each w1 In Word.ActiveDocument.Words

s2 = " " & Trim(w1.Text) & " "
If InStr(ss, s2) = 0 Then
If s2 Like " [0-9]* " Then

Debug.Print "="; s2; "=";
ss = ss & s2
End If
End If
Next w1
Word.Documents.Add
Word.ActiveDocument.Paragraphs(1).Range.Text = Replace(ss, "  ", " ")
End Sub
спасибо хоть на этом, но открытие нового документа это лишняя работа!)
попробую сейчас разобраться полностью с кодом и сделать, то что нужно! Спасибо за помощь!
но если вас интересует программа не должна убирать повторные элементы, а считать все числа в открытом файле, кроме повторных!
т.е. есть числа: 1 2 2 4 22
выведет отчет о нахождении 4 чисел.
wander_vafl9 вне форума Ответить с цитированием
Старый 27.11.2013, 15:02   #6
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
Радость

и еще один не менее важный момент то, что он удаляет и игнорирует текст, а он его должен не трогать вообще)
wander_vafl9 вне форума Ответить с цитированием
Старый 27.11.2013, 15:11   #7
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

код ничего не удаляет
при этом создает перечень номеров в новом файле

===
заменить список на количество в msgbox ---20 секунд
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 27.11.2013, 15:19   #8
wander_vafl9
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 11
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
код ничего не удаляет
при этом создает перечень номеров в новом файле

===
заменить список на количество в msgbox ---20 секунд
с mxgbox согласен!) но у меня текст Макроса удаляет текст и создает новый только с цифрами!) для проверки моих утверждений я открыл файл с кучей текста и небольшим количеством цифр и он удаляет текст))) не стал бы врать в глаза!
wander_vafl9 вне форума Ответить с цитированием
Старый 27.11.2013, 15:22   #9
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

он создает 2-й документ, а не портит основной
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 27.11.2013, 15:28   #10
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

без создания документа

Код:
Sub w131127_1528()
Dim w1 As Object, j1
Dim ss, s1, s2
For Each w1 In Word.ActiveDocument.Words

s2 = " " & Trim(w1.Text) & " "
If InStr(ss, s2) = 0 Then
If s2 Like " [0-9]* " Then
j1 = j1 + 1
Debug.Print "="; s2; "=";
ss = ss & s2
End If
End If
Next w1
MsgBox "номеров " & j1 & Chr(13) & Chr(10) & ss
'Word.Documents.Add
'Word.ActiveDocument.Paragraphs(1).Range.Text = Replace(ss, "  ", " ")
End Sub
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# нужна помощь... Маринка777 Помощь студентам 0 29.11.2009 21:31
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12
нужна помощь world12_tk Общие вопросы C/C++ 0 24.02.2009 21:11