mjpv
Гость
|
|
« : 02-10-2009 19:46 » |
|
Можно ли в окошке "Найти и заменить" в макросе в качестве строки замены использовать то, что предварительно скопировано в буфер обмена? Проблема в том, что копирование в буфер будет различным в процессе работы макроса, только эту информацию надо заменить вместо определенных символов. Пример ниже.
With Selection.Find .Text = "3100," .Replacement.Text = "4200" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With
В этом блоке вместо 4200 надо вставить информацию из буфера обмена? Это возможно или нет. Поделитесь пожалуйста, кто знает.
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #1 : 15-12-2010 11:37 » |
|
Dim Data1 As New DataObject, Буфер1$ Data1.GetFromClipboard Буфер1$ = Data1.GetText(1) With Selection.Find .Text = "3100," .Replacement.Text = Буфер1$ .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With
До сих пор не пойму где теги выделения скрипта брать???
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #2 : 15-12-2010 11:42 » |
|
Ципихович Эндрю,
[code] [/code]
или в полной форме ответа есть кнопки
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #3 : 15-12-2010 11:51 » |
|
ну написал код выделил, на какую кнопку нажать, где она находится, чтобы запись тегами обросла Не писать же вручную а почему бы и не написать ? Или ты куда-то торопишься ? ))
|
|
« Последнее редактирование: 15-12-2010 11:54 от Алексей1153++ »
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #4 : 15-12-2010 11:54 » |
|
Ципихович Эндрю, внизу есть кнопка "ОТВЕТ"
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #5 : 15-12-2010 12:11 » |
|
Dim Data1 As New DataObject, Буфер1$ Data1.GetFromClipboard Буфер1$ = Data1.GetText(1) With Selection.Find .Text = "3100," .Replacement.Text = Буфер1$ .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Это ещё запомнть нужно, что решётка это код
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #6 : 15-12-2010 12:14 » |
|
Ципихович Эндрю, ок, разобрались. А вопрос то ты забыл задать )) Отредактируй пост Ответ #1 , потом всё лишнее удалю
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #7 : 15-12-2010 12:20 » |
|
>А вопрос то ты забыл задать Какой вопрос??? Могу задать, как вставить не последний, а предпоследний объект из буфера обмена эту строку .Replacement.Text = Буфер1$ И как поставить условие, в вдруг в буфере обмена не текст, а файл или изображение? ??
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #8 : 15-12-2010 13:09 » |
|
Совершенно очевидно, что надо сначала спросить буфер какого типа информация в нём находится, и, в соответствии с этим, принимать решение.
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #9 : 15-12-2010 23:36 » |
|
> надо сначала спросить буфер какого типа информация в нём находится согласен, скрипт условия подскажите
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
Offline
Пол:
|
|
« Ответ #10 : 16-12-2010 07:23 » |
|
Зависит от версии Васика. Например, в 6.0: If Clipboard.GetFormat(vbCFText) Then Text1.Text = Clipboard.GetText(vbCFText) End If
|
|
|
Записан
|
Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома. "Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash "Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman "All science is either physics or stamp collecting." Ernest Rutherford "Wer will, findet Wege, wer nicht will, findet Gründe."
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #11 : 16-12-2010 08:07 » |
|
Еще бы ремарки добавить 'условие, если ... If Clipboard.GetFormat(vbCFText) Then 'тогда ... Text1.Text = Clipboard.GetText(vbCFText) End If Заремарчьте пожалуйста
|
|
|
Записан
|
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #12 : 16-12-2010 08:13 » |
|
и как Ваш скрипт работает сам по себе 'условие, если ... If Clipboard.GetFormat(vbCFText) Then 'тогда ... Text1.Text = Clipboard.GetText(vbCFText) End If или вот так Dim Data1 As New DataObject, Буфер1$ Data1.GetFromClipboard Буфер1$ = Data1.GetText(1) 'условие, если ... If Clipboard.GetFormat(vbCFText) Then 'тогда ... Text1.Text = Clipboard.GetText(vbCFText) End If Что-то ни так ни так не работает, поясните пжл
|
|
|
Записан
|
|
|
|
baldr
|
|
« Ответ #13 : 16-12-2010 08:52 » |
|
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #14 : 17-12-2010 01:09 » |
|
Ну есть скрипт 'требуется установить ссылку на "Microsoft Forms 2.0 Object Library" 'получить текст из буфера обмена в строку переменной On Error Resume Next Dim MyData As DataObject Dim strClip As String Set MyData = New DataObject MyData.GetFromClipboard strClip = MyData.GetText 'то что находится в буфере обмена, последний объект Debug.Print Err.Number & Err.Description 'ошибка происходит если в буфере обмена файл MsgBox$ Err.Number & " " & Err.Description В зависимости от номера ошибки будем узнавать, что там в буфере файл или что другое И какие номера этих ошибок?? Можно самому испробовать но сколько таких вариантов получения ошибки?
|
|
|
Записан
|
|
|
|
baldr
|
|
« Ответ #15 : 17-12-2010 07:17 » |
|
Ципихович Эндрю, существует функция CStr(), которая переводит объект в строку (как может). С ней ты ошибку не получишь.
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #16 : 17-12-2010 09:40 » |
|
не понял, так:strClip = CStr(MyData.GetText) Всё равно получаю ошибку -2147221404DataObject:GetText Ошибка в структуре FORMATETC Но дело в том, что получить ошибку наооборот интересно, если знать сколько таких вариантов получения ошибки? ? Чтобы по той полученной ошибки ориентироваться
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #17 : 17-12-2010 09:50 » |
|
Но дело в том, что получить ошибку наооборот интересно "Ошибка наоборот" - это, пожалуй, правильная программа. сколько таких вариантов получения ошибки? ? Видимо, если ошибки нумеруются начиная с -1, то не менее двух миллиардов. Кстати, в интернете можно искать информацию. Поиск приводит на страничку маленькой, но гордой софтверной компании: http://support.microsoft.com/kb/186063/ru?spid=2484&sid=639
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #18 : 17-12-2010 09:59 » |
|
Я согласен, что это:Но дело в том, что получить ошибку наооборот интересно глупо, но Вы можете подсказать условия, если ... тогда в буфере файл и т. д.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #19 : 17-12-2010 10:36 » |
|
У DataObject есть метод для определения формата данных: GetFormat Determines if a specified data format is available in the DataObject object. Вот эти форматы: Constant | Value | Meaning | vbCFText | 1 | Text | vbCFBitmap | 2 | Bitmap (.bmp) | vbCFMetafile | 3 | Metafile (.wmf) | vbCFEMetafile | 14 | Enhanced metafile (.emf) | vbCFDIB | 8 | Device-independent bitmap (.dib or .bmp) | vbCFPalette | 9 | Color palette | vbCFFiles | 15 | List of files | vbCFRTF | -16639 | Rich text format (.rtf) |
Текст из буфера можно забирать только при условии, что формат в нем vbCFText.
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #20 : 17-12-2010 11:26 » |
|
Спасибо, уже теплее подскажите скрипт, как у DataObject определить формат данных.
|
|
|
Записан
|
|
|
|
Dale
|
|
« Ответ #21 : 17-12-2010 11:35 » |
|
Ципихович, а зачем самому напрягаться-то? Вы тогда уж нам откройте удаленный доступ к своему компьютеру, чтобы мы сами сразу готовые программы набирали. А то мы сейчас скрипт подскажем, а его еще придется на клавишах набрать, мороки столько...
|
|
|
Записан
|
Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #22 : 19-12-2010 08:50 » |
|
в этой строке sStr = oDataObj.GetText() 'присваиваем переменной значение из буфера это последнее значение буфера, можно узнать сколько их там объектов??? каждому объекту циклом или в массив присвоить переменную???
|
|
|
Записан
|
|
|
|
|