ว้าวฉันจะถามคำถามนี้ด้วยตัวเอง แต่ถูกถามแล้ว เอาท์พุทคลิปบอร์ด 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