Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/120: Рейтинг темы: голосов - 120, средняя оценка - 5.00
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194

Макрос поиска и замены букв в MS Word с верхним подчеркиванием

04.09.2009, 20:31. Показов 25346. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
мне нужно позарез написать мкрос чтобы он искал во всем документе жирные слова или буквы и заменял их на обычные буквы но уже с черточкой вверху...как сделать их обычными я знаю)))...как сделать так что бы черта поставилась на нужное место..нужно это сделать в word... ну и для power point такой не помешает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.09.2009, 20:31
Ответы с готовыми решениями:

MultiReplace - Word макрос поиска и замены текста
Добрый день. Хочу представить для обсуждения мой небольшой, но полезный макрос. Макрос предназначен для замены текста и для поиска...

Макрос поиска и замены дат в документе Word
Всем привет. Есть текстовый документ который периодически заполняется, в начале документа есть дата после неё идет запись, после снова дата...

Макрос поиска одного из указанных символов в Word
Здравствуйте!) У меня возникла проблемка, с которой я вожусь битый час( Макрос осуществляет поиск одного из указанных в поиске...

43
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.09.2009, 09:02
Вставь сюда вордовский файл с буквой с верхней чертой. Хочется посмотреть, что за верхнее подчёркивание.
0
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
05.09.2009, 13:48  [ТС]
ну просто буква а в верху автофигура (черта) там по сути все сводится к тому что нужно найти координаты этой буквы или слова а потом наверное сместится на верх и прилепить там черту
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.09.2009, 14:07
Понятно. Т. е. необходимо над замененными буквами ставить автофигуру Линия.
Просто интересно, а зачем это надо?
0
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
05.09.2009, 14:09  [ТС]
да мне физик задание дал.. ему нужен макрос или программу написать чтоб в его методичках все векторы которые выделены жирным поменялись на привычные буквы с чертой вверху))сказал если сделает кто-то то 4 за колоквиум поставит))
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.09.2009, 14:14
Еще зайди в разделы форума фриланс, спроси сколько будет стоить такой макрос.
Если его можно быстро сделать, то думаю рублей 200 всего будет стоить
0
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
05.09.2009, 14:23  [ТС]
так мне самому это интересно сделать)))
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.09.2009, 15:00
Сейчас почитал, оказывается вектор надо вставлять через редактор Формул. Я вставил и был в шоке: эта черта вставляется высоко, следовательно расстояния в абзаце между строками будут разными: там, где вектор, строка будет шире, а где нет его - уже. Дурдом одним словом. Насколько Word не доработан.

Хотя я не прав, можно регулировать междустрочный интервал и расстояние между строками будет одинаковое во всём абзаце.

Добавлено через 32 минуты
Я вот что придумал. Только это не макрос.
1. Вставляешь в документ формулу с помощью Microsoft Equation (нижняя строчка, шестая слева кнопка).
2. Копируешь эту формулу в буфер обмена.
3. Найти и заменить. В поле Найти вводишь вектор, который тебе нужен и делаешь формат Полужирный.
В поле Заменить - Из буфера обмена.

Использование Автофигур в качестве подчёркиваний - бред полный. Надо использовать формулы.
0
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
05.09.2009, 16:39  [ТС]
так если есть такая формула...то разве нельзя в макросе написать что каждое полужирное слово менять на обычный шрифт и применять эту формулу
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.09.2009, 17:49
На поверхностном уровне нельзя. Всё что есть в диалоговом окне Найти и заменить, всё это можно использовать в макросах: в поле Заменить нельзя вставить Формулу, соответственно и в макросе нельзя это сделать.
Если ты попробуешь вставить Формулу при записи макроса, то увидишь, что макрос записывает только вставку Поля формулы. Поэтому написать макрос по вставке в определенное место Формулы нельзя.

Буфер обмена можно заменить Автотекстом. Сохрани Формулы как автотексты, а потом вставляй в нужные места. Но как это автоматизировать с помощью макросов не знаю. Я бы использовал Найти и заменить, а автотекст поместил бы на панель инструментов. Когда находил бы нужный вектор, удалял его, а затем вставлял автотекст.

Но по любому использование Автофигур для таких целей - это бред.

Но есть и какие-то другие способы воздействия, о них я не знаю, если тебе очень надо то иди во Фриланс.

Добавлено через 49 минут
Ещё одна идея пришла:
1. Копируешь в буфер обмена формулу.
2. Выделяешь весь текст - Найти и заменить - Ставишь галочку "Выделить все элементы, найденные в Текущий фрагмент" - в поле Найти вводишь вектор и делаешь формат полужирным - Найти все - Закрыть.
3. Нажимаешь в буфере обмена на (сам знаешь, куда).

Только если в документе есть другой жирный текст, то соответственно он тоже превратится в формулы. Я сейчас поискал в интернете, можно ли искать и выделять отдельные буквы, например надо выделить вектор а, и как сделать так, чтобы а не была выделена в слове, например, amsterdam, но не нашёл и устал искать, однако (вообще, я часами ищу какую-нибудь х..).
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.09.2009, 20:19
Я в предыдущем сообщении написал: "Что можно использовать в Найти и заменить, то и можно использовать и в макросе". На самом деле в макросе можно использовать ещё меньше: в них нельзя осуществлять поиск и замену с учётом форматирования.
И на самом деле я предлагаю вот такую систему замены:
1. Копируете в буфер обмена формулу.
2. Найти и заменить - в поле Найти "Полужирный шрифт" - в поле Заменить "Использовать буфер обмена".
3. По одному просматривать, если находишь то, что нужно - нажимаешь Заменить.
0
 Аватар для Abu
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
06.09.2009, 16:04
Никогда прежде мне не приходилось работать с vba в word-е, поэтому код получился абы как, и по-любому есть более правильное и красивое решение, но
да мне физик задание дал.. ему нужен макрос или программу написать чтоб в его методичках все векторы которые выделены жирным поменялись на привычные буквы с чертой вверху))сказал если сделает кто-то то 4 за колоквиум поставит))
я так поняла, что нужен результат а не красивый правильный макрос, и посему у меня получилось вот это
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim i As Long
For i = 1 To ActiveDocument.Characters.Count
If ActiveDocument.Characters(i).Bold = -1 Then
ActiveDocument.Characters(i).Bold = 0
ActiveDocument.Characters(i).Select
'****
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    Selection.TypeText Text:="EQ \x \to("
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.TypeText Text:=")"
    Selection.Fields.ToggleShowCodes
    Selection.MoveDown Unit:=wdLine, Count:=1
'****
End If
Next i
У меня в Word 2003 это работает.

Только если в документе есть другой жирный текст, то соответственно он тоже превратится в формулы. Я сейчас поискал в интернете, можно ли искать и выделять отдельные буквы, например надо выделить вектор а, и как сделать так, чтобы а не была выделена в слове, например, amsterdam
Это решается добавлением условия проверки на буква это или слово.
1
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
06.09.2009, 17:50  [ТС]
Busine2009, да не ...весь прикол в том чтоб все было абсолютно автоматически там то что жирное это сто пудов вектор....кроме заголовков но их можно поправить

Добавлено через 6 минут
Abu, скажи..а где здесь строка чтоб он пробелы ставил мне надо их убрать... и чтоб он ставил черту во все жирное слово а не только букву?

Добавлено через 19 минут
Abu,Busine2009, и еще....как помтавить условие чтоб он не по одной букве делал а по всему слову сразу? и нужно чтоб заголовки пропускал
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2009, 19:23
Вот модификация - имеет один недочёт, пробел справа вставляется:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub main()
Dim i As Long
For i = 1 To ActiveDocument.Words.Count
If ActiveDocument.Words(i).Bold = True Then
ActiveDocument.Words(i).Bold = False
ActiveDocument.Words(i).Select
 
   With Selection
      If Right(Selection.Text, 1) = Chr(32) Then
         .MoveLeft wdCharacter, 1, wdExtend
      End If
   End With
 
'****
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    Selection.TypeText Text:="EQ \x \to("
    Selection.MoveRight Unit:=wdCharacter, Count:=Selection.Words(i).Characters.Count - 1
    Selection.TypeText Text:=")"
    Selection.Fields.ToggleShowCodes
'****
End If
Next i
End Sub
Abu

Да я посмотрел: для выделения только одной буквы нужно в диалоговом окне Найти и заменить поставить галочку Только слово целиком.
1
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
06.09.2009, 19:34  [ТС]
а вот еще надо чтоб и по середине слова было такое же....и еще когда в конце слова жирную букву ставиш он черту после слова ставит

Добавлено через 4 минуты
и можно коментарии к строкам добавить а то я не все строки понимаю... и вот еще...а возможно чтоб он такие же преобразования делал и в формулах сделаными на MathType 4.0 Equation?

Добавлено через 4 минуты
мне на этой строке ошибку выдает
Visual Basic
1
 Selection.MoveRight Unit:=wdCharacter, Count:=Selection.Words(i).Characters.Count - 1
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2009, 19:51
salvafion
мне на этой строке ошибку выдает
Visual Basic
1
Selection.MoveRight Unit:=wdCharacter, Count:=Selection.Words(i).Characters.Count - 1
У меня тоже: я на первом слове тренировался, думал, что всё чики-пики, вставил код сюда. А потом попробовал на других словах, и ошибку выдаёт. Но я в VBA вообще не соображаю, поэтому не знаю, в чём причина. Так чего-то леплю.
0
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
06.09.2009, 19:53  [ТС]
он не доходит до конца не ставит закрывающуюся скобку... на первом же слове
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2009, 20:34
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Sub main()
 
'Создаём область в оперативной памяти под названием "i"
'и говорим ПК, что будем хранить там целые числа (есть еще десятичные)
Dim i As Integer
 
'Говорим ПК, что в i будем помещать цифры от 1 до количества слов в документе
'и просматриваем все слова в документе
For i = 1 To ActiveDocument.Words.Count
'Если слово оказывается жирным, то
If ActiveDocument.Words(i).Bold = True Then
'превращаем его в нежирное и
ActiveDocument.Words(i).Bold = False
'выделяем (подобно тому, как ты выделяешь слово 2 щелчком мыши
ActiveDocument.Words(i).Select
 
'Если ты сейчас дважды щёлкнешь по слову, то увидишь, что вместе
'со словом выделился и правый пробел. Мы убираем из выделения его:
With Selection
      If Right(Selection.Text, 1) = Chr(32) Then
         .MoveLeft wdCharacter, 1, wdExtend
      End If
   End With
 
'Затем в выделенную область вставляем поле (Ctrl + F9)
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
'Помещаем в поля текст "EQ \x \to(здесь наш бывший жирный вектор
    Selection.TypeText Text:="EQ \x \to("
'Смещаемся вправо на наш вектор
    Selection.MoveRight Unit:=wdWord, Count:=1
'И закрываем его скобкой
    Selection.TypeText Text:=")"
'Скрываем коды полей
    Selection.Fields.ToggleShowCodes
 
End If
Next i
End Sub
Добавлено через 8 минут
salvafion

Вообще, ты можешь сам просматривать, какая команда, что делает.
  • Делаешь так, чтобы одновременно было видно документ и VBA.
  • В VBA: щёлкаешь пр. кн. мыши по панели инструментов и выбираешь Debug
  • Затем с помощью кнопки Step Into переходишь от команды к команде и наблюдаешь в Word, что происходит.
1
10 / 10 / 1
Регистрация: 16.06.2009
Сообщений: 194
06.09.2009, 20:43  [ТС]
спасибо теперь стало понятно)))а вот если мне нужно чтобы он не только слова находил но и буквы а потом смотрел если слово целиком жирное то пишем его в формулу если же только часть то только то что жрное)))не знаю как здесь но в Си я бы шел посимвольно от пробела к пробелу..но это не Си( и еще мне нужно исключить из рассмотрения слова к которым применен формат заголовыка
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
06.09.2009, 20:50
В смысле Буквы? Вектор - это же отдельная буква или слово из 2 и более букв, вектор не является частью слова - вектор - это отдельное слово.
Этот макрос работает как с одной буквой, так и со словами.

По поводу заголовков: содержание есть в этих методичках? Если нет, то как выравниваются заголовки: по левому краю, по ширине или по центру, да и размер шрифта какой, то есть чем заголовки отличаются от векторов?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2009, 20:50
Помогаю со студенческими работами здесь

[Microsoft Word] Cкрипт замены жирных, состоящих из заглавных букв, слов.
У меня есть файл где встречаются слова, выделенные жирным шрифтом и состоящие из заглавных букв. Жирный шрифт также встречается в среди...

Макрос замены сокращений в MS Word 2003
Нужно написать макрос в ворде 2003! но никак не получается! Заменить сокращения: • <т.д. Знак абзаца> на <так далее. Знак...

Макрос замены картинок в word 2010
Нужно написать скрипт замены картинок на формулы, то есть есть картинка "НЕ X" и "X" нужно заменить на формулы, причем рядом с...

Макрос поиска и вывода строк, содержащих значение поиска
Здравствуйте! Есть макрос для поиска значения из ячейки А1 по всему листу и копированием строк из всех листов, содержащих это значение. ...

Макрос Word 2016 замена шрифта рандомных символов на выбранный - MS Word
Есть обычный текст, только буквы и цифры Нужно, чтобы после обработки макроса выбирались случайные символы (примерно четверть от общего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru