Макросы Word: информация из Clipboard

Программирование на Visual Basic for Applications
barbudo
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 04.03.2006 (Сб) 11:40
Откуда: Подмосковье

Макросы Word: информация из Clipboard

Сообщение barbudo » 04.03.2006 (Сб) 11:51

Подскажите, пожалуйста, возможно ли "извлечь информацию" из буфера обмена для дальнейшей ее обработки программным способом?
И если да, то как?
Хочу использовать скопированный фрагмент для вставки в нужное место после его "обработки".

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.03.2006 (Сб) 11:53

Точнее ситуацию, пожалуйста. Начиная со стадии, когда фрагмент ещё не в буфере.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

barbudo
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 04.03.2006 (Сб) 11:40
Откуда: Подмосковье

Сообщение barbudo » 04.03.2006 (Сб) 18:03

Для прояснения ситуации - предыстория. Надоело мне в разных документах в Word после числа писАть его прописью вручную. Сочинил макрос для этого, но без малого (см. выше). Хочу реализовать алгоритм:
1) Средствами Word выделить число и скопировать в буфер.
2) С помощью макроса вставить буквенный эквивалент числа в выбранное место текста.
Итак, вопрос: как вытащить содержимое из буфера? Есть ли прямой путь или в VBA такое невозможно?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.03.2006 (Сб) 18:15

Я вижу, более полное описание проблемы не помогло автору увидеть необязательность операций с буфером обмена. По этому поводу вопрос - почему нельзя написать макрос, оперирующий с selection.text и выводящий результат через selection.insertafter?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

barbudo
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 04.03.2006 (Сб) 11:40
Откуда: Подмосковье

Сообщение barbudo » 04.03.2006 (Сб) 18:28

Дело в том, что предполагается копировать из одного места в тексте, а вставлять в другое. В этом случае, мне кажется, проблемно использовать selection-конструкцию, т.к. она будет относиться к последней выбранной точке текста.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.03.2006 (Сб) 18:46

Допустим.

Код: Выделить всё
Dim d As DataObject
 
Set d = New DataObject
d.GetFromClipboard
MsgBox d.GetText
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

barbudo
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 04.03.2006 (Сб) 11:40
Откуда: Подмосковье

Сообщение barbudo » 05.03.2006 (Вс) 1:44

Вот что значит профи :!:
Это самое то, спасибо!
В результате своего добился: программа работает и может быть легко встроена в Word на другом компьютере - надо только заменить файл Normal.dot на прилагаемый. :D

Забыл сразу сказать - код прочитывается в макросах через VBA.
Вложения
Normal.rar
(19.57 Кб) Скачиваний: 68
Последний раз редактировалось barbudo 09.03.2006 (Чт) 11:34, всего редактировалось 1 раз.

QUICK
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 26.12.2005 (Пн) 10:33

Сообщение QUICK » 06.03.2006 (Пн) 23:45

barbudo
barbudo писал(а):Дело в том, что предполагается копировать из одного места в тексте, а вставлять в другое. В этом случае, мне кажется, проблемно использовать selection-конструкцию, т.к. она будет относиться к последней выбранной точке текста.


GSerg писал(а):Я вижу, более полное описание проблемы не помогло автору увидеть необязательность операций с буфером обмена.

GSerg Мне представляется, имел в виду, что в рамках поставленной задачи, незачем дергать Clipboard. Имеющий глаза да видит - чтобы забрать в Clipboard - нужно выделить, а выделенное...


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList