Que tal uma solução VBA? Isto irá copiar toda a seleção da célula selecionada no canto superior esquerdo para a célula selecionada no canto inferior direito. Se você selecionar células incongruentes, esse código coletará tudo entre o canto superior esquerdo e o inferior direito de qualquer maneira. Você pode mudar isso, é claro. Foi mais fácil assim. Ele coloca guias entre as colunas e as quebras de linha entre as linhas.
Sub CopyText()
Dim obj As Object
Dim rng As Range
Dim r As Long, c As Long
Dim s As String
Dim rTL, rBR, cTL, cBR
rTL = Selection.Cells(1, 1).Row
cTL = Selection.Cells(1, 1).Column
For Each rng In Selection.Cells
If rng.Row < rTL Then rTL = rng.Row
If rng.Column < cTL Then cTL = rng.Column
If rng.Row > rBR Then rBR = rng.Row
If rng.Column > cBR Then cBR = rng.Column
Next
For r = rTL To rBR
For c = cTL To cBR
s = s & Cells(r, c).Value
If c < cBR Then s = s & Chr(9)
Next
If r < rBR Then s = s & vbNewLine
Next
Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
obj.SetText s
obj.PutInClipboard
Set obj = Nothing
End Sub
Se você está se perguntando sobre esta parte:
Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
... é apenas a versão de associação tardia de Set obj = New DataObject
, para que você não precise adicionar referências no VBA.