如何复制Excel中单元格的文本值

我有一个工作表中的简单的复制button与代码。

Range("A9:E19").Select Selection.Copy 

我最近注意到,当将结果粘贴到电子邮件中时,我也获得了单元格,而不仅仅是文本值。 我已经阅读了很多关于将值粘贴回excel的post,但是当我粘贴到外部电子邮件应用程序(例如Gmail)时,是否有一种方法可以控制实际发送到剪贴板的内容,而不是过滤粘贴的内容见过的例子。

  Sub Button1_Click() Option Explicit End Sub Sub Macro1() ' ' Macro1 ''Copy some Range Range("A9:E19").CurrentRegion.Copy 'Convert it to text and put in clipboard With dOBJ .GetFromClipboard S = .GetText .Clear .SetText S, 1 .PutInClipboard End With End Sub 'Set Reference to Microsoft Forms 2.0 Object Library Sub CopyText() Dim dOBJ As DataObject Dim S As String Set dOBJ = New DataObject 'Copy some Range 'Range("a1").CurrentRegion.Copy End Sub 

以下方法使用DataObject对象可能会有所帮助。 DataObject在Forms库中,我使用了早期绑定,但是如果你要分发这个,你可以使用后期绑定。 它似乎在其他应用程序中使用普通粘贴粘贴纯文本。

 Option Explicit 'Set Reference to Microsoft Forms 2.0 Object Library Sub CopyText() Dim dOBJ As DataObject Dim S As String Set dOBJ = New DataObject 'Copy some Range Range("a1").CurrentRegion.Copy 'Convert it to text and put in clipboard With dOBJ .GetFromClipboard S = .GetText .Clear .SetText S, 1 .PutInClipboard End With End Sub 

考虑到你上面发布的代码,将其合并到你的macros中的一种方法是使用下面的“button”代码:=

 Option Explicit Private Sub CommandButton1_Click() 'Set Reference to Microsoft Forms 2.0 Object Library Dim dOBJ As DataObject Dim S As String Range("A19:E19").CurrentRegion.Copy Set dOBJ = New DataObject With dOBJ .GetFromClipboard S = .GetText .Clear .SetText S, 1 .PutInClipboard End With End Sub 

编辑检查OP的工作簿示例显示问题是有合并单元格,其中不可见单元格仍包含数据。 内容正在被复制操作拾取。

一种解决scheme是在复制操作之前,解开并合并合并的单元格以除去无关的数据。 这对整个工作簿的影响是不可知的。

如果上面是一个可行的解决scheme,那么做一个简单的副本,并粘贴到gMail文本,将是一个简单的解决scheme。 如果编辑合并的单元格以消除“隐藏的”数据会弄乱工作簿,则可以在复制到剪贴板之前将其复制到临时表中并进行更改。