VBA Excel Как скопировать в буфер обмена значение переменной #588223


#0 by Russkiy
Привет, ребята! Мне требуется помощь: нужно в коде макроса (Excel) задать процедуру копирования переменной в буфер обмена. Коротко: задаю значение переменной, а затем нужно каким-то образом заставить это значение перейти в буфер обмена. Как это сделать? Если кто в курсе, подскажите, пожалуйста.
#1 by skunk
помещаешь значение в ячейку ... выделяешь ... копируешь
#2 by Азат
нажимаешь "Начать запись макроса" выполняешь все то, что тебе надо Нажимаешь "остановить запись макроса" Переходишь в VBA-окошко и получаешь вагон счастья
#3 by Torquader
Для начала, нужно понять, что такое буфер обмена и какие форматы он поддерживает. Потом, нужно осознать, что значение переменной должно быть представлено в одном из этих форматов, так как другого способа что-то записать в буфер обмена нет. Ну а дальше, нужно найти объект, который управляет буфером обмена. P.S. есть подозрение, что преобразование значения в текст и копирование текста в буфер обмена - самое оно.
#4 by Russkiy
Нет, ребята, похоже, вы меня ещё не поняли. Вручную мне неинтересно - данных много, времени мало... Надо автоматически из кода копировать в буфер обмена. То, что вы предлагаете - попробуйте, получится ли? Ведь то, что я копирую в буфер обмена, мне из него же надо вставлять в другой программе, например, в 1С
#5 by Russkiy
Да, конечно, я не против преобразования значения в текст и его копирования в буфер обмена. Вопрос в том, какой рагмент кода VBA может заставить комп это сделать?
#6 by ДенисЧ
выделяешь фрагмент и Selection.Copy
#7 by Азат
норм тебя поняли, читай ответы до просветления...
#8 by Russkiy
Азат, я тут уже два часа просветляюсь именно тем способом, какой ты мне советуешь... Попробуй сам: получится у тебя?
#9 by Torquader
Dim d as DataObject d.SetText("MyTextForBuffer") d.PutInClipboard d.GetFromClipboard MsgBox d.GetText,0,"Clipboard однако"
#10 by skunk
не уловил зачем из кода что-то куда-то копировать
#11 by Russkiy
Torquader, спасибо, ща попробую... skunk, я копирую не из кода, а с помощью кода.
#12 by Torquader
Он копирует значение переменной, но он не сказал, откуда берётся это значение (подозреваю, что где-то оно уже есть, но не в переменной).
#13 by Russkiy
Torquader, мой код до определённого места присваивает переменной некоторое значение из некоторой ячейки. А затем это значение мне нужно с помощью кода скопировать в буфер обмена. Вы, похоже, меня правильно понимаете. Я попробовал использовать Ваш фрагмент кода, сделав модуль: Sub Name Dim d As DataObject d.SetText ("MyTextForBuffer") d.PutInClipboard d.GetFromClipboard MsgBox d.GetText, 0, "Clipboard ??????" End Sub При попытке его отработать я получаю сообщение об ошибке: "User-defined type not defined" Что бы это значило?
#14 by Torquader
А то, что я, как всегда, поспешил - объект-то создать надо. Dim d as New DataObject или как там в VBA пишется - целый год уже туда не заглядывал ^_^
#15 by Russkiy
К сожалению, и слово New не помогает... Вываливается та же ошибка.
#16 by skunk
подключить библиотеку fm20.dll из system32
#17 by skunk
ну и нью нужно ... иначе потом будет ошипка 91
#18 by Russkiy
Я, к моему великому сожалению, чайник (хреново, мужики, быть чайником...). Поэтому мне хорошо бы узнать, как подключить эту библиотеку и что потом с ней делать, конкретно?
#19 by skunk
заходишь в редактор кода ... меню - tools->references ... в диалоге кликаешь по кнопке browse ... искаешь эту fm20.dll в папке system32 ... открыть ... в списке должно добавиться ... макрософт формс 2.0 либрари объект ... ставишь галочку(хотя она должна поставиться сама) ... ок ... радуешься
#21 by Russkiy
skunk, я всё сделал, как ты сказал. Спасибо тебе! Радуюсь, конечно, как не радоваться - прежде всего тому, что есть ещё у нас отзывчивые и добрые люди. Ага, пока писал - появилась твоя ссылка... Ща погляжу, чево там...
#22 by Russkiy
Это о том, как подключить библиотеку... Я вроде бы это уже сделал. А что же дальше?
#23 by Torquader
Дальше должен работать код.
#24 by skunk
а дальше исправляешь "Dim d As DataObject" на "Dim d As New DataObject" и код работает ...
#25 by Russkiy
Ага... Отлично, ща попробую... И отпишусь...
#26 by Russkiy
Да, skunk, заработало! Спасибо тебе! Думаю, дальше я уж смогу разобраться... Спасибо всем, ребята! И с Новым годом вас!
#27 by Torquader
А вообще, проще было задать вопрос google, так как он отвечает быстрее и без ошибок.
#28 by sammmm
PutInClipboard  и тут ЕдРо
#29 by Torquader
Ну вот, пришёл поручик и всё опошлил. P.S. вам в другую тему.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С