在 Autocad 中寻找一种超过 32767 脚本限制的方法
lookin for a way for Exceeding the 32767 limit for scripting purposes in Autocad
我正在使用 excel 计算一些值,然后将这些值插入到 AutoCAD 绘图块中
通过编写超过 2500 行的脚本行
然后我需要将所有行复制一次并在 AutoCAD 中粘贴一次。
所以我尝试通过 concat 或 text join 合并超出一个单元格限制的行
是否存在超出或合并多个单元格中的值的问题。
这听起来像 XY problem。可能有更好的方法,直接使用 Autocad 的脚本功能来完成您想要做的任何事情。任何通过将一个应用程序中的文本组装到 copy/paste 到另一个应用程序中来工作的解决方案充其量是笨拙的。
不过,当然可以将多个单元格连接成一个字符串,然后将其复制到剪贴板。下面的代码就是这样做的。
Function Clipboard$(Optional s$)
'Code from Excel Hero
'
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
为了证明这种方法可以复制拆分成许多单元格的大字符串,以下测试子将长度为 45,000 的字符串复制到剪贴板:
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 在应得的功劳处给予功劳,请注意,上面的代码使用了 this 将文本复制到剪贴板的功能的出色答案。
我正在使用 excel 计算一些值,然后将这些值插入到 AutoCAD 绘图块中
通过编写超过 2500 行的脚本行
然后我需要将所有行复制一次并在 AutoCAD 中粘贴一次。
所以我尝试通过 concat 或 text join 合并超出一个单元格限制的行
是否存在超出或合并多个单元格中的值的问题。
这听起来像 XY problem。可能有更好的方法,直接使用 Autocad 的脚本功能来完成您想要做的任何事情。任何通过将一个应用程序中的文本组装到 copy/paste 到另一个应用程序中来工作的解决方案充其量是笨拙的。
不过,当然可以将多个单元格连接成一个字符串,然后将其复制到剪贴板。下面的代码就是这样做的。
Function Clipboard$(Optional s$)
'Code from Excel Hero
'
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
为了证明这种方法可以复制拆分成许多单元格的大字符串,以下测试子将长度为 45,000 的字符串复制到剪贴板:
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 在应得的功劳处给予功劳,请注意,上面的代码使用了 this 将文本复制到剪贴板的功能的出色答案。