Vaya, iba a hacer esta pregunta yo mismo pero ya se ha hecho. Toda la salida del portapapeles de Excel está delimitada por tabuladores por defecto. Esto es un poco molesto para la salida de texto plano “real” cuando se tiene una fuente de ancho fijo, pero no necesariamente el apoyo delimitador de tabulación.
De todos modos, encontré y modifiqué una pequeña macro de Excel que copiará la región actualmente seleccionada como una simple tabla ASCII de columnas de ancho fijo – así:
187712 201 37 0.18 2525 580 149 0.25 136829 137 43 0.31
Aquí está el código de la macro. Para usarlo, asegúrese de activar la pestaña Desarrollador en las Opciones de Excel si está usando Excel 2007 o posterior.
Sub CopySelectionToClipboardAsText()
' requires a reference to "Windows Forms 2.0 Object Library"
' add it via Tools / References; if it does not appear in the list
' manually add it as the path C:\Windows\System32\FM20.dll
Dim r As Long, c As Long
Dim selectedrows As Integer, selectedcols As Integer
Dim arr
arr = ActiveSheet.UsedRange
selectedrows = UBound(arr, 1)
selectedcols = UBound(arr, 2)
Dim temp As Integer
Dim cellsize As Integer
cellsize = 0
For c = 1 To selectedcols
temp = Len(CStr(Cells(1, c)))
If temp > cellsize Then
cellsize = temp
End If
Next c
cellsize = cellsize + 1
Dim line As String
Dim output As String
For r = 1 To selectedrows
line = Space(selectedcols * cellsize)
For c = 1 To selectedcols
Mid(line, c * cellsize - cellsize + 1, cellsize) = Cells(r, c)
Next c
output = output + line + Chr(13) + Chr(10)
Next r
Dim MyData As MSForms.DataObject
Set MyData = New DataObject
MyData.SetText output
MyData.PutInClipboard
MsgBox "The current selection was formatted and copied to the clipboard"
End Sub