MS 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编辑器中,转到“工具” - >“参考”)。

您现在可以使用默认运行宏对话框将该宏分配给另一个快捷方式(例如Ctrl-Shift-C),或者通过执行Application.OnKey "^c", "OwnCopy"甚至覆盖Ctrl-c。 不过,我不建议覆盖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 Docs电子表格中。 然后我使用它来满足我的复制需求,因为它不会在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()
链接地址: http://www.djcxy.com/p/62257.html

上一篇: MS Excel adds line break when copying a cell

下一篇: c# DataGridView EditMode and DeleteKey