Здравствуйте! Подскажите пожалуйста, как реализовать следующее:
при нажатии в форме на кнопку, значение из textbox1 копируется в буфер обмена
(необходимо для дальнейшей вставки в различные программы).
Private Sub CommandButton1_Click()
Clipboard.Clear
Clipboard.SetText TextBox1.Text
End Sub
Указанный код не помогает.
Заранее спасибо.
Илья, с какой целью Вы вообще решили использовать объект DataObject?
Я, например, никогда его не использовал.
Необходимо копировать данные из Excel в другую программу.
Может это поможет:
Код:
Private Sub CommandButton1_Click()
'Создание и VBA-наименование объекта "DataObject".
Dim myDataObject As New MSForms.DataObject
'Очистка DataObject.
myDataObject.Clear
'Копирование текста в DataObject.
myDataObject.SetText Text:=TextBox1.Text
End Sub
Не по теме. Сейчас обратил внимание, что Вы в первом сообщении написали, зачем Вам это надо (в скобках написано), а я не заметил.
Отлично, но в конце кода добавил:
myDataObject.PutInClipboard
для копирования в буфер обмена.
Есть другой способ использования буфера обмена. Может будет Вам удобнее. Можно использовать вместо объекта DataObject нажатия клавиш.
Для кода ниже предполагается, что на форме есть два текстбокса и две кнопки.
Код
Private Sub CommandButton1_Click()
'Вставка курсора в текстбокс.
Me.TextBox1.SetFocus
'Выделение всего текста в текстбоксе.
VBA.SendKeys "^A", True
'Копирование выделенного текста.
VBA.SendKeys "^C", True
'Убирание выделения.
VBA.SendKeys "^V", True
End Sub
Private Sub CommandButton2_Click()
'Очистка текстбокса от прежних данных.
Me.TextBox2.Text = ""
'Вставка курсора в текстбокс.
Me.TextBox2.SetFocus
'Вставка текста из буфера обмена.
VBA.SendKeys "^V", True
End Sub
Спасибо, но код с "DataObject" мне идеально подошел.