|
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. вам в другую тему. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |