Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/98: Рейтинг темы: голосов - 98, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 31.08.2006
Сообщений: 28

Прочесть буфер обмена

18.09.2006, 22:18. Показов 21614. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасьте! Как в VBA сделать субж? Сенк!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2006, 22:18
Ответы с готовыми решениями:

Буфер обмена
Ребята, а как проверить пустой ли буфер? мне надо, если что-то есть в буфере, совершать действие...если он пуст, другое действие.

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

Восстановить буфер обмена
Добрый день! Так уж потребовалось, что необходимо было создать рядом с ячейкой кнопку выбора из справочника. Всё нормально. Кнопки...

35
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
05.05.2011, 19:15
Я столкнулся с задачей извлечения из буфера скопированных строк из таблицы и сделал для себя такую функцию, которая читает буфер, делит содержимое на строки и помещает результат в массив. Думаю, Вам это поможет.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function строки_из_буфера()
 
    Dim tempData As DataObject
    Dim s() As String
    
    Set tempData = New DataObject
        
    'получить данные из буфера
    tempData.GetFromClipboard
        
    'разбить данные на строки и поместить в массив
    s() = Split(tempData.GetText, Chr(13) & Chr(10))
        
    'возврат значений
    строки_из_буфера = s()
    
End Function
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
05.05.2011, 19:46
это я так понял последнее значение буфера обрабатываете, как 1 е, 2 е?? какое захочу, узнать сколько их там??
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
05.05.2011, 20:11
Всё содержимое буфера помещается в массив "s" и передаётся в макрос, вызвавший эту функцию.
Но суть не в этом. Я просто показал как работать с буфером. Вовсе не обязательно использовать мой код полностью.
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
15.07.2011, 12:12
Слушайте, а как с буфером работать из под powerPointa? там даже классов таких нет DataObject
0
 Аватар для Настаев
65 / 51 / 2
Регистрация: 15.12.2010
Сообщений: 297
15.07.2011, 12:36
Если Вы работаете в PowerPoint и Вам понадобилась библиотека из другого Office-приложения, просто подключите её к проэкту.
:cofee:
Например, когда я работаю в Access, а мне нужно функции для вычисления, которые имеются только в Excel, я захожу в меню Tools\References и ставлю галочку на нужную библиотеку. После этого в коде Access можно писать Excel.Worksheetfunction...
C PowerPoint-ом я не работал, но принцип VBA for Applications один и тот же

Добавлено через 7 минут
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
это я так понял последнее значение буфера обрабатываете, как 1 е, 2 е?? какое захочу, узнать сколько их там??
Я тогда толком не ответил на вопрос.
Допустим я руками скопировалс 200 строк из таблицы
В буфере они хранятся как один поток, а мне нужно пройтись по каждйо скопированной строке
Я бы использовал For Each, но для нужно прочитать буфер и каждую строку записать в переменную.
Чтобы не создавтаь 200 переменных, особенно, если я не знаю, сколько там строк, я передал все значения в массив с помощью команды
Visual Basic
1
строки_из_буфера = s()
Чтобы узнать количество элементов массива, используется функция Ubound(s), где s - имя переменной-массива

Для использования массива в цикле можно обращаться к отдельным элементам массива по номеру
Например s(8), s(14) и т.д.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
15.07.2011, 13:07
Belthazor4,
есть два способа получить DataObject в VBA:
  1. создайте форму, а потом удалите её, если она не нужна. После создания формы появится DataObject;
  2. Tools - References... - Microsoft Forms 2.0 Object Library.
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
15.07.2011, 18:31
я решил использовать такой метод
...
Все прекрасно работает
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
15.07.2011, 18:46
из какого имено сообщения, 4 или 5??
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
15.07.2011, 18:50
блин, ну не зря же я линк на пост сделал... из 4 , с использованием модуля во вложении. правда закомментить пришлось две строчки в конце
Visual Basic
1
2
Forms!Clipf!Result = ClipBoard_GetText
Forms!Clipf.Requery
но на работу это не повлияло, даже не стал разбираться зачем они нужны.
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
15.07.2011, 18:53
а с первой что делать:
Option Compare Database
почему она красным выделена??
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
15.07.2011, 18:57
А, ну да - удали к едрени фени =) тоже на работоспособность не влияет =)
ну и собственно работа с бувером через стринги. я использовал для копирования в буфер параметров графика в PPT, стринг такой к примеру : CHARTPROP**55**66**77**88 и т.д. CHARTPROP - типа мы проверяем, лежит ли в буфере, что нам нужно, чтобы не то не использовать, а потом через ** - нужные мне параметры. А рзабуферивал через split и вытягивал нужные мне параметры
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
15.07.2011, 19:04
что за ересь в том модуле запустите два раза подряд:
Visual Basic
1
2
3
4
5
6
7
Sub Добавить_строку_в_буфер_обмена()
 
Dim strCopyString As String
strCopyString = "texраt text"
ClipBoard_SetText strCopyString
 
End Sub
один раз добавится и всё
?????
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
15.07.2011, 19:18
я не понял в чем состоит первая часть твоего, вопроса. Но судя по коду - да, добавится один раз
смотри вот мой пример использования
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub CopyProp()
    Dim str As String
    With ActiveWindow.Selection.ShapeRange(1)
        If .HasChart = msoTrue Then
                str = "CHARTPROP**" & CStr(.Left) & "**" & CStr(.Top) & "**" & CStr(.Width) & "**" & CStr(.Height) 
            ClipBoard_SetText str
        End If
    End With
End Sub
Sub PasteProp()
    Dim str
    Dim pp
    With ActiveWindow.Selection.ShapeRange(1)
        If .HasChart = msoTrue Then
            str = ClipBoard_GetText
            If VBA.Left(str, 11) = "CHARTPROP**" Then
            pp = VBA.Split(str, "**")
                .Left = CSng(pp(1))
                .Top = CSng(pp(2))
                .Width = CSng(pp(3))
                .Height = CSng(pp(4))
            End If
        End If
    End With
End Sub
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
15.07.2011, 19:23
где Вич??
.HasChart
а вижу - With ActiveWindow.Selection.ShapeRange(1)
а чего он выделяет
.HasChart
????
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
15.07.2011, 19:28
Вот тема на эту тему, извините за каламбур..
Копирование-вставка (буфер обмена)
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
15.07.2011, 19:34
чтобы не выделяло: objClip As New Clipboard
какая библиотека??
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
15.07.2011, 19:51
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
чтобы не выделяло: objClip As New Clipboard
какая библиотека??
Это не библиотека а создание нового экземпляра модуля класса Clipboard
.. Его (модуль класса Clipboard) надо скопировать из моего Экселя в свой проект..
0
245 / 55 / 6
Регистрация: 05.08.2010
Сообщений: 222
15.07.2011, 19:52
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
где Вич??
.HasChart
а вижу - With ActiveWindow.Selection.ShapeRange(1)
а чего он выделяет
.HasChart
????
че????
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,327
15.07.2011, 19:55
Цитата Сообщение от dzug Посмотреть сообщение
Это не библиотека а создание нового экземпляра модуля класса Clipboard
.. Его (модуль класса Clipboard) надо скопировать из моего Экселя в свой проект..
скопировал класс модуля, не помогает
правда это делаю в Ворде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.07.2011, 19:55
Помогаю со студенческими работами здесь

Переменную в буфер обмена
Как информацию из переменной в буфер обмена поместить?

Переменная и буфер обмена
Добрый день! подскажите как переменной присвоить значение ранее скопированного в буфер обмена? по примеру: txt =

Копирование-вставка (буфер обмена)
Народ не ругайтесь слишком сильно, есть код на VBA TextBox1.SelStart = 0 TextBox1.SelLength = TextBox1.TextLength ...

Значение ячейки в буфер обмена
Опять не понятно, как поместить значение ячейки в буфер обмена. Ну надо мне так.

Как очистить буфер обмена?
вот собственно и весь вопрос Заранее спасибо


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru