复制单元格时MS Excel 2010或2007或任何版本(不从单元格中选择文本)并粘贴到任何编辑器会添加换行符并将光标发送到下一行。令人讨厌的是将光标向上移动到最后一行。
将光标恢复到最后一行似乎没什么用,但如果你作为一个程序员不得不继续这么做,我觉得非常糟糕。如果excel中有设置停止此操作,是否有任何建议?
我试过看在线没找到任何东西,也查找了excel的选项,没有找到任何东西。
复制单元格时MS Excel 2010或2007或任何版本(不从单元格中选择文本)并粘贴到任何编辑器会添加换行符并将光标发送到下一行。令人讨厌的是将光标向上移动到最后一行。
将光标恢复到最后一行似乎没什么用,但如果你作为一个程序员不得不继续这么做,我觉得非常糟糕。如果excel中有设置停止此操作,是否有任何建议?
我试过看在线没找到任何东西,也查找了excel的选项,没有找到任何东西。
您可以创建自己的复制例程,该例程不存储整个单元格,只存储剪贴板中的值:
Sub OwnCopy()
Dim DataObj As New MSForms.DataObject
DataObj.SetText ActiveCell.Value 'depending what you want, you could also use .Formula here
DataObj.PutInClipboard
End Sub
为了能够编译宏,您需要包含“Microsoft Forms 2.0 Object Library”作为参考(在Visual Basic编辑器中,转到Tools-> References)。
您现在可以将此宏指定给另一个快捷方式(例如 按Ctrl - 转移 - C)使用默认运行宏对话框 - 甚至覆盖 按Ctrl - C 通过执行 Application.OnKey "^c", "OwnCopy"
。但是,我不建议覆盖 按Ctrl - C 因为你很可能想要使用通常与其一起复制的所有其他信息,除了粘贴到编辑器之外的任何其他情况。
要使此永久性,只需将宏存储在您的个人工作簿中。
如果您想要一个更复杂的复制例程,也可以处理多个单元格/选择区域,请使用以下代码:
Sub OwnCopy2()
Dim DataObj As New MSForms.DataObject
Dim lngRow As Long
Dim intCol As Integer
Dim c As Range
Dim strClip As String
Const cStrNextCol As String = vbTab
Const cStrNextRow As String = vbCrLf
With Selection
If Not TypeOf Selection Is Range Then
On Error Resume Next
.Copy
Exit Sub
End If
If .Areas.Count = 1 Then
For lngRow = 1 To .Rows.Count
For intCol = 1 To .Columns.Count
strClip = strClip & _
Selection(lngRow, intCol).Value & cStrNextCol
Next intCol
strClip = Left(strClip, Len(strClip) - Len(cStrNextCol)) _
& cStrNextRow
Next lngRow
Else
For Each c In .Cells
strClip = strClip & c.Value & vbCrLf
Next c
End If
strClip = Left(strClip, Len(strClip) - Len(cStrNextRow))
DataObj.SetText strClip
DataObj.PutInClipboard
End With
End Sub
我在翻译公司的Excel电子表格和我们的代码之间复制/粘贴了大量的翻译文件。不得不每次都删除换行符让我不得不上楼。
最后,我复制了整张表并将其粘贴到新的Google文档电子表格中。然后我用它来满足我的复制需求,因为它不会在Excel上复制新行。
希望有所帮助!
我同意这很烦人,但不确定还有什么可做的。
Excel自动格式化单元格...制表符分隔的列,行分隔的行(单个单元格是1列的行)。
核实: 在.NET中,Clipboard.GetText()显示格式化已经在剪贴板中
这里有一些IronPython来说明:
# Copy some cells in Excel, then run the following
import sys, clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Clipboard
Clipboard.GetText()