1

Тема: Помогите Макросу найти символы из буфера обмена.

Здравствуйте!
К сожалению не имею опыта в написании макроса, но неодноразово сталкивался с проблемой поиска макросом информации которая находится в буфере, но он ищет только первую внесенную информацию. тоесть он не ищет символы из буфера, а ищет конкретные символи (в моем случае "ХХХ") которые сразу прописались при записи Макроса. Пример:

Sub вставить()
'
' вставить Макрос
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "ххх"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub

как прописать, что б искало не "ххх" а символы из буфера, так как перед этим другой макрос их туда копирует.
пробовал искать в интернете:
        .Text = Буфер1$
и
        .Text = Clipboard.GetText(vbCFText)
но увы ничего не выходит..
подскажите пожалуйста как правильно прописать....

огромное спасибо.
не получается

2

Re: Помогите Макросу найти символы из буфера обмена.

но он ищет только первую внесенную информацию
точнее скзать но он ищет только последнюю внесенную информацию
иначе похоже никак

3

Re: Помогите Макросу найти символы из буфера обмена.

Нужна ещё одна функция, которая будет читать текст из буфера

Sub Вставить()

Selection.Find.ClearFormatting
    
    Selection.Find.Replacement.ClearFormatting
    
    With Selection.Find
        .Text = содержимое_буфера
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    
    Selection.Find.Execute

End Sub

Function содержимое_буфера() As String

    Dim даные As New DataObject
            
    'получить данные из буфера
    даные.GetFromClipboard
            
    'возврат результата в вызывающий макрос
    содержимое_буфера = даные.GetText

End Function

Предупреждаю сразу: переменная типа "DataObject" может показывать ошибку, поскольку в VBA нужно подключить библиотеку "FM20.dll".
По умолчанию она не задействуется в Word.
В меню "Tools \ References" она называется "Microsoft Forms 2.0 Object Library"
Если её не окажется в списке, нажмите кнопку "Обзор..." и в папке "System 32" выберите файл "FM20.dll"

4

Re: Помогите Макросу найти символы из буфера обмена.

но он ищет только последнюю внесенную информацию
иначе похоже никак????

5

Re: Помогите Макросу найти символы из буфера обмена.

Как это последнюю? Что ему сказали, то он и ищет.
Только последнюю -- это когда я вручную нажимаю Ctrl+F. Тогда он отображает тот поиск, который выполнялся в последний раз. А если в макросе конкретно указано, что искать, значит он так и сделает.

Честно говоря вопрос был задан немного замысловато. Не правда ли?

6

Re: Помогите Макросу найти символы из буфера обмена.

А! Кажется я понял, что нужно.
Word запоминает последних 24 ... как бы это сказать... копирвоания

Не вижу этому применпния.
Пусть vitaliymedvid объяснится. 
Он ведь говорил, что буфер заполняется макросом.
Потом будет думать.
hmm

7

Re: Помогите Макросу найти символы из буфера обмена.

Спасибо за подсказку...
Мне как раз и последнее запоминание необходимо искать.
сейчас попытаюсь использовать, то, что Вы мне подсказали...

8

Re: Помогите Макросу найти символы из буфера обмена.

>Не вижу этому применения.
>Пусть vitaliymedvid объяснится.
Объяснюсь я, применений много, сечас даже не вспомню, был бы инструмент, а применение найдётся
>Потом будет думать.
Уж пожалуйста