значение из textbox в буфер обмена

Автор Илья, 08 октября 2014, 14:42

Илья

Здравствуйте! Подскажите пожалуйста, как реализовать следующее:
при нажатии в форме на кнопку, значение из 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" мне идеально подошел.