在Autocad中查找用于脚本编写目的的超过32767限制的方法



我使用excel计算一些值,然后将这些值插入AutoCAD绘图块

通过编写超过2500行的脚本行

然后我需要复制所有的线一次,然后在AutoCAD中粘贴一次。

所以我试图通过concat或text join来组合行,这超出了一个单元格的限制

是否存在超出或组合多个单元格中的值的情况。

这听起来像是一个XY问题。可能有一种更好的方法,直接使用Autocad的脚本功能,可以做任何你想做的事情。任何通过在一个应用程序中组装文本来复制/粘贴到另一个应用中的解决方案都是笨拙的。

尽管如此,还是可以将多个单元格连接到一个字符串中,然后将其复制到剪贴板。下面的代码就是这样做的。

Function Clipboard$(Optional s$)
'Code from Excel Hero
'https://stackoverflow.com/a/60896244/4996248

Dim v: v = s  'Cast to variant for 64-bit VBA support
With CreateObject("htmlfile")
With .parentWindow.clipboardData
Select Case True
Case Len(s): .setData "text", v
Case Else:   Clipboard = .GetData("text")
End Select
End With
End With
End Function
Sub CopyRangeToClip(R As Range, Optional delimiter As String = "")
Dim i As Long, n As Long, A As Variant, cell As Range
n = R.Cells.Count
ReDim A(0 To n - 1)
For Each cell In R.Cells
A(i) = cell.Value
i = i + 1
Next cell

Clipboard Join(A, delimiter)
End Sub

您可以创建一个简单的子(例如分配给键盘快捷键(,将最后一个子应用于当前选择:

Sub CopyAndJoinSelection()
CopyRangeToClip Selection
End Sub

为了证明这种方法可以复制分裂成许多单元的大字符串,以下测试子将长度为45000的字符串复制到剪贴板:

Sub Test()
Dim i As Long
For i = 1 To 9
Cells(i, 1).Value = String(5000, Trim(Str(i)))
Next i
CopyRangeToClip Range("A1:A9")
End Sub

Yo在信用到期的地方给予信用,请注意,上面的代码使用了这个极好的答案来实现将文本复制到剪贴板的功能。

相关内容

最新更新