2013-02-04 16 views
18

MS Excel 2010 oder 2007 oder eine beliebige andere Version, wenn Sie eine Zelle kopieren (keinen Text aus der Zelle auswählen) und Einfügen in einen beliebigen Editor fügt einen Zeilenumbruch hinzu und sendet den Cursor an nächste Zeile. Es ist ärgerlich, den Cursor zurück zur letzten Zeile zu bewegen.MS Excel fügt beim Kopieren einer Zelle einen Zeilenumbruch hinzu

Es sieht nicht viel Arbeit aus, um den Cursor zurück zur letzten Zeile zu bringen, aber wenn Sie das viele Male als Programmierer machen müssen, fühle ich mich sehr schlecht. Irgendwelche Vorschläge, wenn es eine Einstellung in Excel gibt, um dies zu stoppen?

Ich habe versucht, online zu suchen hat keine Sache gefunden und auch die Optionen von Excel nachgeschlagen, hat nichts gefunden.

+2

Das ist nicht wirklich ein Problem für Programmierer - wenn Sie es helfen können, verwenden Sie nie die Zwischenablage, um Daten zu übertragen ... –

+1

Gleiche Frage auf SuperUser: [Kopieren von Excel ohne Zeilenumbruch] (http://superuser.com/q/543615/54568) –

Antwort

12

Sie können Ihre eigene Kopierroutine erstellen, die nicht die ganze Zelle speichern, sondern nur in der Zwischenablage seinen Wert:

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 

Um in der Lage sein, um das Makro zu kompilieren, müssen Sie „Microsoft Forms enthalten 2.0 Object Library“als Referenz (in Visual Basic-Editor, zur Tools-> References) ..

Sie können nun entweder das Makro auf eine andere Verknüpfung zuweisen (zB Ctrl - Shift- - C) Verwenden Sie den Standard-Run-Makro-Dialog - oder überschreiben Sie Ctrl - c durch Ausführen von Application.OnKey "^c", "OwnCopy". Ich würde jedoch nicht empfehlen, Ctrl - c zu überschreiben, da Sie höchstwahrscheinlich alle anderen Informationen verwenden möchten, die normalerweise in einem anderen Fall als das Einfügen in einen Editor kopiert werden.

Um dies dauerhaft zu machen, speichern Sie das Makro einfach in Ihrem persönlichen Arbeitsbuch.

Falls Sie eine anspruchsvollere Kopierroutine, die auch mehrere Zellen/Auswahlbereiche, verwenden Sie diesen Code verarbeiten kann:

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 
+0

Danke .. Ich versuchte, ein Makro zu erstellen, aber wenn ich versuche, es auszuführen, heißt es "Compiler Fehler Benutzerdefinierter Typ nicht definiert. " –

+0

Sie müssen den Verweis auf "" Microsoft Forms 2.0 Object Library "- ich aktualisierte die Antwort! –

+0

Peter, es hat funktioniert. Aber wenn ich mehrere Zellen zu kopieren, ich wähle alle Zellen und dann die Verknüpfung nur ausführen kopiert die erste Zelle unter den Haufen –

1

Ich bin damit einverstanden, es ist ärgerlich, aber nicht sicher, ob es etwas zu tun.

Excel formatiert automatisch die Zellen ... durch Tabulator getrennte Spalten, durch Zeilen getrennte Zeilen (eine einzelne Zelle ist eine Zeile mit 1 Spalte).

Um zu überprüfen: In .NET zeigt Clipboard.GetText(), dass die Formatierung bereits in die Zwischenablage des

Hier einige Ironpython zu illustrieren:

# 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() 
9

ich Kopieren/Einfügen eines großen Übersetzungsdatei für unsere Anwendung zwischen der Excel-Tabelle des Übersetzungsunternehmens und unserem Code. Den Zeilenumbruch jedes Mal löschen zu müssen, trieb mich an die Wand.

Am Ende habe ich das ganze Blatt kopiert und in eine neue Google Docs-Tabelle eingefügt. Dann habe ich das für meine Kopieranforderungen verwendet, da es nicht den Zeilenumbruch in der Kopie hinzufügt, den Excel ausführt.

Hoffe, dass hilft!

+0

Excel Online von OneDrive fügt auch nicht die Zeilenschaltung hinzu – jirkamat

Verwandte Themen