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

Ste*_*fan 0 excel vba

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

第一:我将“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
Run Code Online (Sandbox Code Playgroud)

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


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

第二行输出是调试代码时的输出,第一行是正常运行的输出。

giz*_*lmo 5

我无法找到“Microsoft Forms 2.0 对象库”,但也可以在工作簿中创建一个用户窗体(然后可以忽略用户窗体)。然后使用这段代码:

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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)