MS Excel复制单元格时添加换行符
当你复制一个单元格(不从单元格中select文本)并粘贴到任何编辑器的MS Excel 2010或2007或任何版本时,都会添加一个换行符并将光标发送到下一行。 它讨厌把光标向上移动到最后一行。
将光标移动到最后一行看起来并不需要太多的工作,但是如果作为一个程序员,我不得不继续这么做,那么我感觉真的很糟糕。 任何build议,如果在Excel中有一个设置来阻止这个?
我试图在网上找没有发现任何东西,也查找了Excel的选项,没有find任何东西。
你可以创build你自己的复制例程,它不存储整个单元格,但只有它的值在剪贴板中:
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
为了能够编译macros,需要包含“Microsoft Forms 2.0对象库”作为参考(在Visual Basic编辑器中,转到“工具” – >“引用”)。
您现在可以使用默认运行macros对话框将该macros指定给另一个快捷方式(例如Ctrl – Shift – C ),或者通过执行Application.OnKey "^c", "OwnCopy"
覆盖Ctrl – c 。 不过,我不build议覆盖Ctrl – c,因为除了粘贴到编辑器之外,您很可能会想要使用通常在其他情况下复制的所有其他信息。
为了使这个永久的,只要将macros存储在您的个人工作簿。
如果你想要一个更复杂的复制例程,也可以处理多个单元格/select区域,请使用以下代码:
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列的行)。
要validation:在.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()