Имя: Пароль:
IT
 
VBA Excel Как скопировать в буфер обмена значение переменной
,
0 Russkiy
 
04.01.12
14:47
Привет, ребята! Мне требуется помощь: нужно в коде макроса (Excel) задать процедуру копирования переменной в буфер обмена. Коротко: задаю значение переменной, а затем нужно каким-то образом заставить это значение перейти в буфер обмена. Как это сделать? Если кто в курсе, подскажите, пожалуйста.
1 skunk
 
04.01.12
14:49
помещаешь значение в ячейку ... выделяешь ... копируешь
2 Азат
 
04.01.12
14:49
нажимаешь "Начать запись макроса"
выполняешь все то, что тебе надо
Нажимаешь "остановить запись макроса"

Переходишь в VBA-окошко и получаешь вагон счастья
3 Torquader
 
04.01.12
14:53
Для начала, нужно понять, что такое буфер обмена и какие форматы он поддерживает.
Потом, нужно осознать, что значение переменной должно быть представлено в одном из этих форматов, так как другого способа что-то записать в буфер обмена нет.
Ну а дальше, нужно найти объект, который управляет буфером обмена.
P.S. есть подозрение, что преобразование значения в текст и копирование текста в буфер обмена - самое оно.
4 Russkiy
 
04.01.12
14:56
Нет, ребята, похоже, вы меня ещё не поняли. Вручную мне неинтересно - данных много, времени мало... Надо автоматически из кода копировать в буфер обмена. То, что вы предлагаете - попробуйте, получится ли? Ведь то, что я копирую в буфер обмена, мне из него же надо вставлять в другой программе, например, в 1С
5 Russkiy
 
04.01.12
14:58
Да, конечно, я не против преобразования значения в текст и его копирования в буфер обмена. Вопрос в том, какой рагмент кода VBA может заставить комп это сделать?
6 ДенисЧ
 
04.01.12
15:01
(5) выделяешь фрагмент и Selection.Copy
7 Азат
 
04.01.12
15:01
(4) норм тебя поняли, читай ответы до просветления...
8 Russkiy
 
04.01.12
15:02
Азат, я тут уже два часа просветляюсь именно тем способом, какой ты мне советуешь... Попробуй сам: получится у тебя?
9 Torquader
 
04.01.12
15:05
Dim d as DataObject
d.SetText("MyTextForBuffer")
d.PutInClipboard

d.GetFromClipboard
MsgBox d.GetText,0,"Clipboard однако"
10 skunk
 
04.01.12
15:06
не уловил зачем из кода что-то куда-то копировать
11 Russkiy
 
04.01.12
15:08
Torquader, спасибо, ща попробую...
skunk, я копирую не из кода, а с помощью кода.
12 Torquader
 
04.01.12
15:09
(11) Он копирует значение переменной, но он не сказал, откуда берётся это значение (подозреваю, что где-то оно уже есть, но не в переменной).
13 Russkiy
 
04.01.12
15:15
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 Torquader
 
04.01.12
15:19
А то, что я, как всегда, поспешил - объект-то создать надо.
Dim d as New DataObject
или как там в VBA пишется - целый год уже туда не заглядывал ^_^
15 Russkiy
 
04.01.12
15:22
К сожалению, и слово New не помогает... Вываливается та же ошибка.
16 skunk
 
04.01.12
15:23
подключить библиотеку fm20.dll из system32
17 skunk
 
04.01.12
15:24
ну и нью нужно ... иначе потом будет ошипка 91
18 Russkiy
 
04.01.12
15:29
Я, к моему великому сожалению, чайник (хреново, мужики, быть чайником...). Поэтому мне хорошо бы узнать, как подключить эту библиотеку и что потом с ней делать, конкретно?
19 skunk
 
04.01.12
15:34
заходишь в редактор кода ... меню - tools->references ... в диалоге кликаешь по кнопке browse ... искаешь эту fm20.dll в папке system32 ... открыть ... в списке должно добавиться ... макрософт формс 2.0 либрари объект ... ставишь галочку(хотя она должна поставиться сама) ... ок ... радуешься
20 skunk
 
04.01.12
15:39
21 Russkiy
 
04.01.12
15:40
skunk, я всё сделал, как ты сказал. Спасибо тебе! Радуюсь, конечно, как не радоваться - прежде всего тому, что есть ещё у нас отзывчивые и добрые люди. Ага, пока писал - появилась твоя ссылка... Ща погляжу, чево там...
22 Russkiy
 
04.01.12
15:42
Это о том, как подключить библиотеку... Я вроде бы это уже сделал. А что же дальше?
23 Torquader
 
04.01.12
15:42
(22) Дальше должен работать код.
24 skunk
 
04.01.12
15:44
а дальше исправляешь "Dim d As DataObject" на "Dim d As New DataObject" и код работает ...
25 Russkiy
 
04.01.12
15:46
Ага... Отлично, ща попробую... И отпишусь...
26 Russkiy
 
04.01.12
15:48
Да, skunk, заработало! Спасибо тебе! Думаю, дальше я уж смогу разобраться... Спасибо всем, ребята! И с Новым годом вас!
27 Torquader
 
04.01.12
15:53
А вообще, проще было задать вопрос google, так как он отвечает быстрее и без ошибок.
28 sammmm
 
04.01.12
17:01
PutInClipboard  и тут ЕдРо
29 Torquader
 
04.01.12
17:11
(28) Ну вот, пришёл поручик и всё опошлил.
P.S. вам в другую тему.