powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Замена обычного текста на надстрочный программно
5 сообщений из 5, страница 1 из 1
Замена обычного текста на надстрочный программно
    #34816819
Mbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

У меня в ворд из БД аксесса формируется документ.
Но в тексте могут встречаться единицы измерения типа м3, мм2 и т.д.

Не могу написать код, который бы заменял все подобные вхождения на нормальные со степенями так сказать.
...
Рейтинг: 0 / 0
Замена обычного текста на надстрочный программно
    #34816859
Mbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот т.е. есть такое

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "3"
        .Replacement.Text = "3"
        .Forward = True
        .Replacement.Font.Superscript = wdToggle
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

это макрос в самом ворде, и он меняет найденный текст на надстрочный...
а вот с частью текста что-то не получается. Т.е. искать то я буду например м3 и мне вовсе не все надо переводить в надстрочный, а только 3.
...
Рейтинг: 0 / 0
Замена обычного текста на надстрочный программно
    #34817879
Mbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот если делаю внутри ворда то все работает, я про замену., а вот если в отдельном модуле вижуал бэйсика, то нет.... Документ открывает, все выделяет, но замену не делает..... Помогите советом!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Set w = CreateObject("Word.Application")
Set doc = w.Documents.Add("D:\1.doc")
w.ActiveDocument.Windows( 1 ).Activate
w.ActiveDocument.Windows( 1 ).Visible = True

Set myFind = w.ActiveDocument.Range( 0 )
myFind.Select
    
myFind.Find.ClearFormatting
myFind.Find.Replacement.ClearFormatting

With myFind.Find
    .Forward = True
    .Text = "3"
    .Wrap = wdFindAsk
    .Replacement.Text = "4"
    .Replacement.Font.Superscript =  1 
End With
...
Рейтинг: 0 / 0
Замена обычного текста на надстрочный программно
    #34823136
Mbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во в общем и целом заработало вот так....

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        'допустим для примера
        Set w = CreateObject("Word.Application")
        Set doc = w.Documents.Add("D:\1.doc")

        'ищем "м3" и "м2" в обычном написании и заменяем на надстрочное
        Set MyRange = doc.Application.ActiveDocument.Content
        MyRange.Find.Font.Superscript =  0 
        MyRange.Find.Replacement.Font.Superscript =  1 
        MyRange.Find.Execute FindText:="м3", ReplaceWith:="м3", Replace:= 2 
        MyRange.Find.Execute FindText:="м2", ReplaceWith:="м2", Replace:= 2 
       
        'ищем "м" в надстрочном написании и заменяем на обычное
        Set MyRange = doc.Application.ActiveDocument.Content
        MyRange.Find.Font.Superscript =  1 
        MyRange.Find.Replacement.Font.Superscript =  0 
        MyRange.Find.Execute FindText:="м", ReplaceWith:="м", Replace:= 2 

в результате получаем метры в кубе и метры в квадрате
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Замена обычного текста на надстрочный программно
    #38394083
alexnic.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
копируете текст на который нужно поменять (т.е. с регистром верхним или нижним) далее найти то что нужно,а в заменить ставите "^с".Т.е. заменить на/с буфера обмена
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Замена обычного текста на надстрочный программно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]