Вау, я собирался задать этот вопрос сам, но он уже был задан. Все выходные данные буфера обмена Excel tabпо умолчанию ограничены. Это отчасти раздражает «настоящий» вывод простого текста, когда у вас есть шрифт фиксированной ширины, но не обязательно поддержка разделителя табуляции.
Во всяком случае, я нашел и изменил небольшой макрос Excel, который будет копировать выбранную область в виде простой таблицы ASCII столбцов фиксированной ширины - например, так:
187712 201 37 0,18 2525 580 149 0,25 136829 137 43 0,31
Вот код макроса. Чтобы использовать его, обязательно включите вкладку «Разработчик» в параметрах Excel, если вы используете Excel 2007 или более позднюю версию.
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