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

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

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

像这样的东西?

Sheet1.Cells(1, 1).Copy Sheet1.Cells(1, 2).PasteSpecial xlPasteValues 

要么

 selection.Copy Sheet1.Cells(1,2).Activate Selection.PasteSpecial xlPasteValues 

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

同样适用于Range对象。

编辑

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

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

但大多数开发人员避免SendKeys因为它可能是不稳定和不可预知的。 例如,上面的代码仅在从Excel中执行macros而不是从VBA执行时才起作用。 当从VBA运行时, SendKeys打开对象浏览器,这是F2在VBA视图中按下时所做的事情:)另外,对于全范围,您将必须循环遍历单元格,将它们一个接一个地复制并粘贴一个一个到应用程序。 现在我觉得好多了,我认为这是一个矫枉过正的问题。

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

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

其实,最好的办法是复制单元格并粘贴到记事本中。 记事本不会识别单元格。 然后,您可以将文本复制到您想要的任何单元格中。 这适用于将多个单元格中的文本复制到单个单元格中。

如果要处理大量要复制的单元格,selection.copy方法将非常慢。 (当我在20万条logging上运行一个macros时,我已经体会到了这一点)

一种100倍以上的性能方式是直接将一个单元格的值分配给另一个单元格。 从我的代码示例:

 With errlogSheet 'Copy all data from the current row reworkedErrorSheet.Range("A" & reworkedRow).Value = .Range("A" & currentRow).Value reworkedErrorSheet.Range("B" & reworkedRow).Value = .Range("B" & currentRow).Value reworkedErrorSheet.Range("C" & reworkedRow).Value = .Range("C" & currentRow).Value reworkedErrorSheet.Range("D" & reworkedRow).Value = .Range("D" & currentRow).Value reworkedErrorSheet.Range("E" & reworkedRow).Value = .Range("E" & currentRow).Value 

这可以很容易地解决而不用打扰与VBA。

用户可以通过Ctrl + Shift + V粘贴剪贴板的内容,而不是更常用的Ctrl + V (粘贴格式)。

Ctrl + Shift + V将剪贴板内容粘贴为纯文本。

在Excel 2013中,您可以使用快捷方式执行此操作。

Ctrl + Alt + V打开粘贴专用窗口。 现在,您可以单击值单选button,或者如果您的Excel是英文,请按V键。 如果您不使用英文的Excel,您可以通过查看单个字母的下划线来查看可以按下哪个button来select想要的选项。

最后按Enter键粘贴复制的select。