如何将数组复制到Excel VBA中的剪贴板

我目前正在寻找一种方法,通过使用Excel VBA复制一维数组剪贴板。 到目前为止,我已经失败了只复制一个string到剪贴板。 我所做的是:

首先:我在我的项目中包含了“Microsoft Forms 2.0 Object Library”

第二:我试图通过使用下面的代码将strTextstring复制到剪贴板。

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

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


编辑:如下所述,我只得到“??” 如果我debugging的代码。 正常运行是给出预期的输出。 这是输出窗口的图像 第二个输出行是在调试代码的时候,第一个是正常运行

第二个输出行是在debugging代码的时候,第一个是正常运行。

我无法find“Microsoft Forms 2.0对象库”,但是也可以在工作簿中创build一个用户窗体(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 

也许你会遇到这里描述的DataObject .setText和.putInClipboard序列将无效的数据(hex63个字符)放入剪贴板