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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2015, 13:26   #1
Егор Александрович
Новичок
Джуниор
 
Регистрация: 03.10.2015
Сообщений: 1
По умолчанию Автозамена в буфере обмена

Добрый день. Прошу помощи, поскольку не силен в программировании.
Есть готовый макрос в VBA Word. Что он делает: Ищет в буфере обмена требуемые совпадения и заменяет на необходимые. P.S. использую для написания своих курсовых работ.
Вот код:
Sub s1()
txt = ClipboardText


'удаление пробела между точкой и запятой
txt = Replace(txt, ". ,", ".,")

'замена двойных пробелов на одинарные
txt = Replace(txt, " ", " ")
txt = Replace(txt, " ", " ")
txt = Replace(txt, " ", " ")

'расшифровка сокращений
txt = Replace(txt, " г.", " года")
txt = Replace(txt, " т.", "том")


SetClipboardText (txt)

End Sub

Function ClipboardText() 'чтение из буфера
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.GetFromClipboard
ClipboardText = .GetText
End With
End Function

Sub SetClipboardText(ByVal txt$) 'запись в буфер
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText txt$
.PutInClipboard
End With
End Sub
Макрос прикреплен в файле "Автозамена". Там есть пример. Работает так: выделяете все, далее ctr+x, далее запускаете макрос, далее вставляете.
Подскажите что нужно дописать, чтобы он умел заменять на текст с различным регистром (индексами). Например: "x2" заменял на "x" в квадрате (2 в верхнем индексе).
Такой код пишет word при записи:Порядок действий: Жмем Home, далее Right, Shift+End, Ctrl+= (Ctrl+Shift+=).
Верхний индекс:

Sub Макрос1()
'
' Макрос1 Макрос
'
'
Selection.HomeKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Superscript = wdToggle
End Sub
Пример в прикрепленном документе: "Верхний индекс"
Нижний индекс:
Sub Макрос2()
'
' Макрос2 Макрос
'
'
Selection.HomeKey Unit:=wdLine
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Subscript = wdToggle
End Sub
Пример в прикрепленном документе: "Нижний индекс"
P.S. Поиск в списке символов - не выход, поскольку вместо "2" может быть любая цифра, буква как английского алфавита, так и русского.
Возможно ли это сделать? Если да, то сколько это будет стоить?
Вложения
Тип файла: rar Примеры.rar (46.4 Кб, 10 просмотров)

Последний раз редактировалось Егор Александрович; 03.10.2015 в 14:29.
Егор Александрович вне форума Ответить с цитированием
Старый 27.02.2016, 03:36   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Зачем мучить буфер!

Цитата:
Сообщение от Егор Александрович Посмотреть сообщение
Жмем Home, далее Right, Shift+End, Ctrl+= (Ctrl+Shift+=).

Пример в прикрепленном документе: "Нижний индекс"
P.S. Поиск в списке символов - не выход, поскольку вместо "2" может быть любая цифра, буква как английского алфавита, так и русского.

Возможно ли это сделать? Если да, то сколько это будет стоить?
Посмотрите-ка пока лучше сюда: http://www.cyberforum.ru/ms-word/thread332837.html#11 (Busine2012) и сюда: http://www.cyberforum.ru/ms-word/thread910587.html#16 (Казанский).
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Капитал - это скорость обмена информацией помноженная на количество участников обмена Alar Свободное общение 86 24.01.2014 06:20
PasteLink - простой макрос на VBA для Excel для вставки в ячейку гипперссылки на файл в буфере обмена. wyfinger Microsoft Office Excel 4 22.05.2013 14:10
Кодировка в буфере обмена dacorp Общие вопросы Delphi 3 14.05.2011 16:46
Выловить в буфере обмена даные с значением http -=Virus=- Помощь студентам 13 20.02.2010 23:14
Что у тебя в буфере обмена? Hollander Свободное общение 26 18.02.2010 16:55