我的 VBA 宏在最新版本的 Excel for windows 10 上运行良好,但无法在 Mac OS Monterey 的 Excel (16.57) 上的剪贴板上插入大字符串。当我限制字符串的大小(不知道确切的限制是什么)时,宏会按预期运行。当我第一次运行它时尝试根据需要(使用非常大的字符串)使用它时,excel 偶尔会给我一个运行时错误“对象不支持此操作”,或者它将运行而没有抛出错误并且只是不添加文本到剪贴板。
如所写,代码从一组选定的单元格创建一个变体数组,找到数组的大小,并将每个单元格的字符串值添加到一个新数组中。然后将该数组连接在一起,最后在每个分隔符处拆分以创建一个新行。同样,这在 Windows 中完美运行,而不是在具有非常大字符串的 Mac OS 中。
Public Sub NoCommasCopyPaste()
Dim objData As New DataObject
Dim vMyArray() As Variant
Dim cellVariant As Variant
Dim sMyArray() As String
Dim rangeAddress As String
Dim i As Long
Dim rowCount As Long
rangeAddress = CStr(Selection.Address(0, 0))
'Debug.Print (rangeAddress)
vMyArray = Range(rangeAddress).Value
rowCount = 0
For Each Item In vMyArray
rowCount = rowCount + 1
Next Item
'Debug.Print (rowCount)
ReDim sMyArray(rowCount) As String
i = 0
For Each Item In vMyArray
i = i + 1
'Debug.Print (CStr(vMyArray(i, 1)))
sMyArray(i) = CStr(vMyArray(i, 1))
'Debug.Print (sMyArray(i))
Next Item
joinString = Join(sMyArray, "**-**")
joinString = Replace(joinString, "**-**", vbLf)
Debug.Print (joinString)
objData.SetText (joinString)
objData.PutInClipboard
End Sub