我在工作表中有一个带有代码的简单复制按钮。
Range("A9:E19").Select
Selection.Copy
我最近注意到,当将结果粘贴到电子邮件中时,我也得到了单元格,而不仅仅是文本值。我已经阅读了很多关于将值粘贴到Excel中的帖子,但是当我粘贴到外部电子邮件应用程序(即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
答案 0 :(得分:0)
使用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
鉴于您上面发布的代码,将其合并到您的宏中的一种方法是使用以下内容作为"按钮"代码:=
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的工作簿示例的检查表明,问题在于存在合并的单元格,其中不可见单元格仍然包含数据。复制操作正在拾取内容。
一种解决方案是在执行复制操作之前取消合并并重新合并合并的单元格以消除无关数据。这对整个工作簿的影响是未知的。
如果以上是可行的解决方案,那么在gMail中执行简单的复制和粘贴文本将是一个简单的解决方案。如果编辑合并的单元格以消除"隐藏"数据会弄乱工作簿,然后可以复制到临时表并在那里进行更改,然后再复制到剪贴板。