Форум программистов, компьютерный форум, киберфорум
MS Office Word
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 02.04.2013
Сообщений: 5

макрос замены стиля у буквы

12.12.2019, 13:49. Показов 3536. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, бьюсь уже не первый день!
Хочу, чтобы при вставке символа макрос делал замену стиля этой вставленной буквы, а он делает всего абзаца. Не пойму что не так.
у меня есть код (макрос ворд):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub макрос()
 
    Dim word As Range, counter As Long
    Dim i As Long, ii As Long
   
    For i = ActiveDocument.Words.Count To 1 Step -3
        counter = 0
        Set word = ActiveDocument.Words(i)
        For ii = word.Characters.Count To 1 Step -1
            If word.Characters(ii).Font.Size = 14 Then
                word.Characters(ii - 1).InsertAfter "а"
                With word.Characters(ii)
                    .Style = "Стиль1"
                End With
                counter = counter + 1
                If counter > 0 Then
                    Exit For
                End If
            End If
        Next ii
    Next i
end sub
Добавлено через 4 часа 20 минут
За верное решение переведу пятихатку, уже спросил своих знакомых
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.12.2019, 13:49
Ответы с готовыми решениями:

Шифровка текста по принципу замены буквы на двухзначный символ, обозначающий положение этой буквы в алфавите
Господа,нужна прога для шифровки текста.Работает принципом замены буквы на двухзначный символ,обозначающий положение этой буквы в алфавите...

Word, макрос, замена стиля заголовка с определённым уровнем VBA
Доброго времени суток, уважаемые форумчане! На дисциплине "Право" была поставлена задача отредактировать кодекс с огромным количеством...

Макрос Замены
Имеется такой вот макрос Замены цен, но его параметры для поиска слишком строгие, нужно чтобы ему хватало и двух символов для поиска т.к....

19
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
12.12.2019, 15:36
Цитата Сообщение от Dreamscapes Посмотреть сообщение
при вставке символа макрос делал замену стиля этой вставленной буквы
как я понимаю - один из способов обойти антиплагиат.
Цитата Сообщение от Dreamscapes Посмотреть сообщение
а он делает всего абзаца.
Ответ на поверхности - Стиль1 определен в документе как стиль абзаца. Определите его как стиль знака, и все заработает корректно, проверено.
Цитата Сообщение от Dreamscapes Посмотреть сообщение
За верное решение переведу пятихатку, уже спросил своих знакомых
У меня нет финансового интереса к деятельности на форуме. Если вы считаете, что мне что-то причитается, прошу перевести в любой благотворительный фонд, хоть сюда: https://dobro.mail.ru/ или в любой другой на ваше усмотрение.
Модераторам - мои извинения и книксен за публикацию данной ссылки, надеюсь это не самое грубое нарушение Правил Форума.
0
0 / 0 / 1
Регистрация: 02.04.2013
Сообщений: 5
12.12.2019, 16:03  [ТС]
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Public Sub zamen()
    Dim word As Range, counter As Long
    Dim i As Long, ii As Long
   
    For i = ActiveDocument.Words.Count To 1 Step -3
        counter = 0
        Set word = ActiveDocument.Words(i)
        For ii = word.Characters.Count To 1 Step -1
            If word.Characters(ii).Font.Size = 14 Then
                word.Characters(ii - 1).InsertAfter "а"
               word.Characters(ii).Select
               Selection.Style = ActiveDocument.Styles("Стиль1")
 
                counter = counter + 1
                If counter > 0 Then
                    Exit For
                End If
            End If
        Next ii
    Next i
 
End Sub
Один из моих знакомых решил
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
12.12.2019, 16:24
Цитата Сообщение от Dreamscapes Посмотреть сообщение
Один из моих знакомых решил
У меня он в половине случаев работы с произвольным текстом выдает ошибку 5941 "Запрашиваемый номер семейства не существет". Там где сработал - со стилем абзаца все равно работает неправильно - символы форматируется под настройки абзаца (что есть то есть), но инструмент "показать форматирование" закономерно показывает, что стиль абзаца знаку не присвоен (разумеется, такого вроде как и быть не может). Символы на изменение стиля не реагируют от слова совсем.

Ну а со стилем символа работал и ваш первый код, но он по крайней мере ошибок не выдавал.
0
0 / 0 / 1
Регистрация: 02.04.2013
Сообщений: 5
12.12.2019, 16:30  [ТС]
Стиль1 должен быть присутствовать в списке стилей.
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
12.12.2019, 16:37
Цитата Сообщение от Dreamscapes Посмотреть сообщение
Стиль1 должен быть присутствовать в списке стилей.
Dreamscapes, объясняю на пальцах: стилей в Word - четыре разных вида: абзаца, символа, связанный и списка. Стиль типа "абзац" и "списка" для ваших целей не годятся в принципе, и код с ними закономерно не работает, или работает неправильно.
Со списком символа же успешно справлялся и первый код. У вас же такая проблема была? Стиль должен обрабатывать одну букву, а менялся весь абзац? Решение простое: для одной буквы нужно использовать стиль символа, а не стиль абзаца. Стиль абзаца - он и действует на весь абзац.

Второй код, даже при наличии списка, не всегда может найти букву, это зависит конкретно от текста. Разбираться почему так мне не сильно интересно, к озвученной задаче это не имеет никакого отношения. У вас другая проблема.
0
 Аватар для Lyutikova
1 / 1 / 0
Регистрация: 15.09.2019
Сообщений: 45
02.02.2023, 09:34
Добрый день! Интересна эта тема, скажите как макросом применить к символу "а" стиль ("Стиль1")
Далаю так, это правильно?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Стиль1()
'
' Стиль1 Макрос
'
'
    Selection.find.ClearFormatting
    Selection.find.Replacement.ClearFormatting
    Selection.find.Replacement.Style = ActiveDocument.Styles("Стиль1 Знак")
    With Selection.find
        .Text = "а"
        .Replacement.Text = "а"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.find.Execute Replace:=wdReplaceAll
End Sub
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,941
Записей в блоге: 4
02.02.2023, 12:46
Цитата Сообщение от Dreamscapes Посмотреть сообщение
чтобы при вставке символа макрос делал замену стиля этой вставленной буквы, а он делает всего абзаца
видимо надежнее применить прямое форматирование символа, макросом
0
 Аватар для Lyutikova
1 / 1 / 0
Регистрация: 15.09.2019
Сообщений: 45
02.02.2023, 12:53
shanemac51, Подскажите плиззз пример макроса с прямым форматированием символа
это так?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub FormatSelection() 
 With Selection.Font 
 .Name = "Times New Roman" 
 .Size = 14 
 .AllCaps = True 
 End With 
 With Selection.ParagraphFormat 
 .LeftIndent = InchesToPoints(0.5) 
 .Space1 
 End With 
End Sub
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
02.02.2023, 13:00
Цитата Сообщение от Lyutikova Посмотреть сообщение
Далаю так, это правильно?
похоже, что нет. У вас стиль "Стиль1", в коде "Стиль1 Знак". Обычно надпись "знак" появляется, когда стиль описан как связанный, в таком случае ваш код по идее должен отформатировать весь абзац вместо конкретных символов "а".
Я бы создал стиль знака "Стиль1" и в коде писал бы "Стиль1", тогда должно все работать.
0
 Аватар для Lyutikova
1 / 1 / 0
Регистрация: 15.09.2019
Сообщений: 45
02.02.2023, 13:08
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub Стиль1()
'
' Стиль1 Макрос
'
'
    Selection.find.ClearFormatting
    Selection.find.Replacement.ClearFormatting
    Selection.find.Replacement.Style = ActiveDocument.Styles("Стиль1")
    With Selection.find
        .Text = "а"
        .Replacement.Text = "а"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.find.Execute Replace:=wdReplaceAll
End Sub
Так?
только там меняем а н а со стилем. это правильно?
Миниатюры
макрос замены стиля у буквы  
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
02.02.2023, 13:10
Цитата Сообщение от Lyutikova Посмотреть сообщение
Так?
На мой взгляд - да. А что вас смущает? Код как-то не так работает, или в чем вопрос?
0
 Аватар для Lyutikova
1 / 1 / 0
Регистрация: 15.09.2019
Сообщений: 45
02.02.2023, 13:12
Dinoxromniy,
Не работает код так(
нажимаю руками на стиль все норм когда выделена буква а
а макрос не выделает ее стилем
Миниатюры
макрос замены стиля у буквы  
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
02.02.2023, 13:17
Цитата Сообщение от Lyutikova Посмотреть сообщение
код так(
Код работает, как умеет, вопрос - что вы ожидаете увидеть.
В приложенном файле по запуску кода буквы а должны стать красными, проверяйте.
Вложения
Тип файла: zip cyber.zip (19.4 Кб, 18 просмотров)
1
 Аватар для Lyutikova
1 / 1 / 0
Регистрация: 15.09.2019
Сообщений: 45
02.02.2023, 13:27
Dinoxromniy, Подскажите вот такой момент есть ли вариант не заменой "а" на "а" со стилем. А указать именно какая буква будет стилем1
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
02.02.2023, 13:33
Цитата Сообщение от Lyutikova Посмотреть сообщение
А указать именно какая буква будет стилем1
Кто и в какой момент времени должен это указать? в смысле выделить в документе и запустить код? В коде - прописать таблицу? Код каждый раз спрашивает, какую букву на какой стиль меняем?
Можно программно создать по стилю каждой букве алфавита (Стиль1а, Стиль1б, Стиль1в), и так же программно поменять стили. Потом руками настроить каждый стиль.
0
 Аватар для Lyutikova
1 / 1 / 0
Регистрация: 15.09.2019
Сообщений: 45
02.02.2023, 13:43
В ваш файл со стилем 1 вставляю вот этот и ошибка (а стиль то там есть)
Миниатюры
макрос замены стиля у буквы  
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
02.02.2023, 13:56
Цитата Сообщение от Lyutikova Посмотреть сообщение
(а стиль то там есть)
К стилю то вопросов нет, вопрос - когда ii=1 что такое word.characters(ii-1)
0
 Аватар для Lyutikova
1 / 1 / 0
Регистрация: 15.09.2019
Сообщений: 45
02.02.2023, 14:02
и так не работает
Миниатюры
макрос замены стиля у буквы  
0
Динохромный
1639 / 776 / 288
Регистрация: 22.12.2015
Сообщений: 2,422
02.02.2023, 14:11
Цитата Сообщение от Lyutikova Посмотреть сообщение
и так не работает
Миниатюры
Lyutikova, приложите файл. Как я понимаю - вы слово меняете, после вставки вашего антиплагиатного "а" слово заново нужно определять. Там set вообще не нужен, так и обращались бы через индексы. Ну и понимать нужно, что такое слово в word - например в конце предложения стоит точка и пробел перед следующим словом. Это для Word тоже слово. Но если к нему добавить "а" - очевидным образом а добавится к следующему слову, а точка с запятой как было, так и останется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.02.2023, 14:11
Помогаю со студенческими работами здесь

Макрос замены символа
Здравствуйте! Помогите пожалуйста создать макрос в ворде, заменяющий юникодский символ \u043e на ...

Макрос замены шрифта
Доброй ночи, адепты) Вы не раз меня выручали, уповаю на вашу помощь и теперь! Скажем есть некий текст, набранный Times New Roman-ом,...

Макрос нумерации и замены
Есть проблемка. Пытаюсь написать макрос, который нумерует строки в таблице. Т.е. есть первый столбец в котором и производится нумерация. Но...

Макрос замены гиперссылок
Здравствуйте! Стоит Excel 2010. Сбились гиперссылки, понадобилось восстановить - вручную слишком долго. Нашел в интернете вот такой...

Макрос для замены значения
Добрый день! Имеется таблица с критериями и их значениями. Нужно заменить значения в таблице на номер стоки из таблицы с...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru