Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Botsman
Статус: Специалист
Рейтинг: 516
∙ повысить рейтинг »
Тимошенко Дмитрий
Статус: Студент
Рейтинг: 461
∙ повысить рейтинг »
Megaloman
Статус: Бакалавр
Рейтинг: 442
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Номер выпуска:929
Дата выхода:19.09.2009, 14:30
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:363 / 93
Вопросов / ответов:1 / 1

Вопрос № 172169: Уважаемые эксперты помогите освоить на ВБА всё что связано с WinApi Поясню что я хочу этими знаниями добиться 1)удалять то что находится в буфере обмена, если ни я лично его туда помещал, а ВБА по моим инструкциям 2)работать с открытыми прил...



Вопрос № 172169:

Уважаемые эксперты помогите освоить на ВБА всё что связано с WinApi
Поясню что я хочу этими знаниями добиться
1)удалять то что находится в буфере обмена, если ни я лично его туда помещал, а ВБА по моим инструкциям
2)работать с открытыми приложениями не входящими в Office то есть считать данные с окон, нажать на кнопку имеющейся в приложении
Если WinApi решает одну из этих двух задач то подскажите. Спасибо Эндрю

Отправлен: 14.09.2009, 14:13
Вопрос задал: Ципихович Эндрю, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Витер Александр Анатольевич, 8-й класс :
Здравствуйте, Ципихович Эндрю.
Для работы с буфером обмена можно обойтись и функциями VBA, хотя WinAPI намного функциональнее. Предлагаю то, чем пользуюсь сам:
Код:
' ============= работа с буфером обмена
Public Sub SetClipboard(Obj As Variant)
Dim MyDataObj As New DataObject
MyDataObj.SetText CStr(Obj)
MyDataObj.PutInClipboard
End Sub

Public Function GetClipboard() As Variant
GetClipboard = "": On Error Resume Next
Dim MyDataObj As New DataObject
MyDataObj.GetFromClipboard: GetClipboard = MyDataObj.gettext
End Function

Public Sub ClearClipboard()
Dim MyDataObj As New DataObject
MyDataObj.SetText "": MyDataObj.PutInClipboard
End Sub
' === ========== работа с буфером обмена(конец)

Как заставить это работать? Создайте новый модуль, чтобы не потерять эти процедуры и функции среди остальных. Назовите его, например, ClipboardRoutines (работа с буфером обмена). Вставьте в него приведенный код.
Как вы видите, в коде имеются две процедуры SetClipboard и ClearClipboard. Соответственно для записи в буфер и для очистки его. И функция GetClipboard для получения содержимого буфера обмена. Перед каждой процедурой или функцией стоит ключевое слово Public, которому мы с вами посвятили уже немало времени. Как вы догадываетесь, это слово делает эти процедуры доступными из других модулей.
Как пользоваться?
Чтобы записать в буфер что-либо, напишите внутри вашей процедуры:
Call SetClipboard("строка для копирования в буфер обмена")

Чтобы очистить буфер:
Call ClearClipboard

Чтобы прочитать содержимое буфера:
Dim ClpBrdContent As Variant 'Переме нная в которую будем читать
ClpBrdContent = GetClipboard 'Вызов функции. Поскольку функция возвращает значение, то это значение нужно чему-то присвоить.
-----
Лучше день потерять - потом за пять минут долететь!

Ответ отправил: Витер Александр Анатольевич, 8-й класс
Ответ отправлен: 14.09.2009, 14:46

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 254171 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.8 от 28.08.2009

    В избранное