如何在不换行的情况下复制 Excel 中的多行

How to copy multiple rows in Excel without a line break

我正在尝试弄清楚如何在没有换行符 的情况下将多行从Excel 通过VBA 复制到文本文件。我在这个网站上找到了来自 Peter (link) 的一段代码,它对我帮助很大,但它只适用于复制一个单元格(例如 F1):

Private Sub CommandButton3_Click()

Dim DataObj As New MSForms.DataObject

DataObj.SetText ActiveSheet.Range("F1")
DataObj.PutInClipboard


End Sub

我尝试将上面的代码修改为复制多个单元格如下:

Private Sub CommandButton3_Click()
    
Dim DataObj As New MSForms.DataObject

DataObj.SetText ActiveSheet.Range("F1:F10")
DataObj.PutInClipboard


End Sub

但我收到一个错误 - 运行-时间错误“13”:类型不匹配。 知道怎么做吗?

代码失败,因为它要求信息为文本格式。您可以修改 .SetText 行如下。

DataObj.SetText Join(Application.Transpose(ActiveSheet.Range("F1:F10").Value))

原则上我们是用Transpose建一个横排,用Join建一个串。

注意: 在您的代码中,您没有使用 .value,它仍然有效,因为它是隐式使用的 属性。最好明确定义 属性 即

DataObj.SetText ActiveSheet.Range("F1").Value