如何在excel vba中将数组复制到剪贴板

时间:2017-05-15 12:51:40

标签: excel vba excel-vba

我目前正在寻找使用excel vba将1D数组复制到剪贴板的方法。到目前为止,我已经失败了只将一个字符串复制到剪贴板。我做的是:

首先:我包含了#34; Microsoft Forms 2.0对象库"到我的项目

第二:我尝试使用以下代码将strText字符串复制到剪贴板。

Sub copyToClipboard()
   Dim objData As New MSForms.DataObject       
   strText= "1"
   objData.SetText strText
   objData.PutInClipboard

   objData.GetFromClipboard
   resultString = objData.GetText
End Sub

如果我将剪贴板粘贴到文本编辑器中,我会得到一些有趣的符号。如果我检查resultString的内容,我会得到" ??"。

编辑:如下所述,我只得到" ??"如果我调试代码。正常运行给出预期输出。这是输出窗口The second output line is while debuging the code, the first one is a normal run

的图像

第二个输出行是在对代码进行调试时,第一个是正常运行。

2 个答案:

答案 0 :(得分:2)

我无法找到" Microsoft Forms 2.0对象库"但是也可以在工作簿中创建UserForm(然后可以忽略UserForm)。然后使用此代码:

Dim objData As New MSForms.DataObject

'Load Test to Clipboard
objData.SetText "TEST"
objData.PutInClipboard

'Get Text from Clipboard
objData.GetFromClipboard
Debug.Print objData.GetText

然后,要将数组加载到剪贴板,请使用以下内容:

Dim objData As New MSForms.DataObject
'Join combines all Array items to one string with the specified delimiter
objData.SetText Join(ARRAY, ",") 'ARRAY is your Array-Variable, "," is your delimiter
objData.PutInClipboard

答案 1 :(得分:0)