如何只复制Excel中的单元格的纯文本?

Eli*_*erg 4 excel vba text copy copy-paste excel-vba

我正在设计一个Excel工作表,用户将单击命令按钮复制预定范围的单元格.然后,用户将使用Firefox或IE将内容粘贴到Web应用程序中.Web应用程序的设计不受我的控制,目前用于数据输入的文本框是富文本输入.这会导致文本看起来很奇怪,并且在用户粘贴到Excel时格式化为Excel.

Excel中是否有一种方法可以使用VBA仅复制所选单元格的纯文本?没有格式,没有表格或单元格边框,只有文本,没有别的.我当前的解决方法宏是复制单元格,打开记事本,粘贴到记事本,然后从记事本复制以获取纯文本.这是非常不受欢迎的,我希望有一种方法可以在Excel中实现这一点.请让我知道,谢谢!

Ioa*_*nis 6

像这样的东西?

Sheet1.Cells(1, 1).Copy
Sheet1.Cells(1, 2).PasteSpecial xlPasteValues
Run Code Online (Sandbox Code Playgroud)

要么

selection.Copy
Sheet1.Cells(1,2).Activate
Selection.PasteSpecial xlPasteValues
Run Code Online (Sandbox Code Playgroud)

Copy 复制整个部分,但我们可以控制粘贴的内容.

同样适用于Range对象.

编辑

AFAIK,没有简单的方法来复制范围的文本而不将其分配给VBA对象(变量,数组等).有一个技巧适用于单个单元格,仅适用于数字和文本(无公式):

Sub test()
    Cells(1, 1).Select
    Application.SendKeys "{F2}"
    Application.SendKeys "+^L"
    Application.SendKeys "^C"
    Cells(1, 3).Select
    Application.SendKeys "^V"
End Sub
Run Code Online (Sandbox Code Playgroud)

但大多数开发人员都会避免,SendKeys因为它可能不稳定且不可预测.例如,上面的代码仅在从excel执行宏时才起作用,而不是从VBA.运行时VBA,SendKeys打开对象浏览器,这是F2在VBA视图中按下时所执行的操作:)此外,对于完整范围,您必须循环遍历单元格,逐个复制它们并将它们逐个粘贴到应用程序.现在我认为更好,我认为这是一个矫枉过正的..

使用数组可能更好.这是我最喜欢的关于如何将范围传递给vba数组并返回的参考:http: //www.cpearson.com/excel/ArraysAndRanges.aspx

就个人而言,我会避免SendKeys和使用数组.应该可以将数据从VBA数组传递给应用程序,但很难说不知道更多有关应用程序的信息.