2015-07-20 3 views
1

Я пытаюсь скопировать strContents в буфер обмена, но я не могу. Мой код:Скопируйте текст с помощью VBA в Access 2007

Dim value_currency As Variant 
Dim strContents As String 

value_currency = value_currency_txt.value 
strContents = NumberToString(value_currency) & " (" & Format(value_currency_txt.Value, "Currency") & ")" 

DoCmd.RunCommand acCmdCopy 

NumberToString преобразует число в строку.

Когда я использую MsgBox strContents, дает мне желаемый результат, но когда я пытаюсь скопировать strContents, он дает мне ошибку 2406 - копия команды теперь недоступна.

Как скопировать текст в буфер обмена?

ответ

1

Если следующий будет работать, то этот вопрос является duplicate:

Dim value_currency As Variant 
Dim strContents As String 

strContents = NumberToString(value_currency) & " (" & Format(value_currency_txt.Value, "Currency") & ")" 

Dim clipboard As MSForms.DataObject 
Set clipboard = New MSForms.DataObject 
clipboard.SetText strContents 
clipboard.PutInClipboard 
+0

Это дает мне ошибку Определенный пользователем тип не определен. Я думаю, что что-то не так с 'MSForms.Dataobjects' –

+0

Мне пришлось добавить FM20.dll из windows system32 в качестве ссылки –

1

Если у вас есть форма под рукой, вы можете использовать этот простой метод:

Вы можете легко отправить команда, которая копирует выбранный текст в текстовом поле формы в буфер обмена:

DoCmd.RunCommand acCmdCopy 

Создание кнопки и (крошечного) текстовое поле на главной форме: btnClip и txtClip.

Присвоить этот код кнопки:

Private Sub btnClip_Click() 
    Dim strClip As String 

    ' Empty textbox to copy from. 
    Me.txtClip.Value = Null 
    ' Retrieve your data. 
    strClip = "Some text to copy for later pasting." 
    If Len(strClip) > 0 Then 
     ' Insert the text in the textbox where it can be copied. 
     Me.txtClip.Value = strClip 
     ' Move focus to the textbox which will select all text. 
     Me.txtClip.SetFocus 
     ' Copy the selected text to the clipboard. 
     DoCmd.RunCommand acCmdCopy 
     ' Return focus to the button. 
     Me.btnClip.SetFocus 
    End If 
End Sub 

Хитрость является небольшой текстовое поле, txtClip. Он может быть размещен в любом месте и даже не должен иметь размер; она может быть равна нулю x.

Смежные вопросы