Freigeben über


Ausschneiden, Kopieren und Einfügen von Bereichen mit der Excel-JavaScript-API

Dieser Artikel enthält Codebeispiele zum Ausschneiden, Kopieren und Einfügen von Bereichen mithilfe der Excel-JavaScript-API. Eine vollständige Liste der Eigenschaften und Methoden, die das Range Objekt unterstützt, finden Sie unter Excel.Range-Klasse.

Hinweis

Die Excel-JavaScript-API beinhaltet keine auf „Zellen“ bezogenen Objekte oder Klassen. Stattdessen definiert die Excel-JavaScript-API alle Excel-Zellen als Objekte Range. Eine einzelne Zelle in der Excel-Benutzeroberfläche wird in ein Objekt Range mit einer Zelle der Excel-JavaScript-API übersetzt. Ein einzelnes Objekt Range kann auch mehrere zusammenhängende Zellen beinhalten. Weitere Informationen finden Sie unter Arbeiten mit Zellen mithilfe der Excel-JavaScript-API.

Tipp

Wenn Sie in einem vollständigen Beispiel mit den AUSschneidenden, Kopieren und Einfügen-APIs aus diesem Artikel experimentieren möchten, öffnen Sie skriptbasiertes Lab in Excel, und wählen Sie Bereiche kopieren und einfügen in unserer Beispielbibliothek aus.

Copy and paste

Die Range.copyFrom-Methode repliziert die Kopier- und Einfügeaktionen der Excel-Benutzeroberfläche. Das Ziel ist das Range Objekt, für das copyFrom aufgerufen wird. Die zu kopierende Quelle wird als ein Bereich oder eine Zeichenfolgenadresse weitergegeben, die für einen Bereich steht.

Das folgende Codebeispiel kopiert die Daten aus A1:E1 in den Bereich ab G1 (aus dem letztendlich in G1:K1 eingefügt wird).

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets.getItem("Sample");
    // Copy everything from "A1:E1" into "G1" and the cells afterwards ("G1:K1").
    sheet.getRange("G1").copyFrom("A1:E1");
    await context.sync();
});

Range.copyFrom weist drei optionale Parameter auf.

copyFrom(sourceRange: Range | RangeAreas | string, copyType?: Excel.RangeCopyType, skipBlanks?: boolean, transpose?: boolean): void;

copyType gibt an, welche Daten aus der Quelle an das Ziel kopiert werden.

  • Excel.RangeCopyType.formulas überträgt die Formeln in den Quellzellen und behält die relative Positionierung der Bereiche dieser Formeln bei. Alle Einträge ohne Formeln werden unverändert kopiert.
  • Excel.RangeCopyType.values kopiert die Datenwerte und, im Fall von Formeln, das Ergebnis der Formel.
  • Excel.RangeCopyType.formats kopiert die Formatierung des Bereichs, einschließlich Schriftart, Farbe und anderer Formateinstellungen, aber keine Werte.
  • Excel.RangeCopyType.all (Standardoption) kopiert sowohl Daten als auch Formatierungen, wobei die Formeln der Zellen beibehalten werden, falls sie gefunden werden.

skipBlanks legt fest, ob leere Zellen in das Ziel kopiert wurden. Wenn „true“, überspringt copyFrom leere Zellen im Quellbereich. Ausgelassene Zellen überschreiben die vorhandenen Daten ihrer entsprechenden Zellen im Zielbereich nicht. Der Standardwert ist „false“.

transpose bestimmt, ob die Daten transponiert werden oder nicht, d. h. die Zeilen und Spalten werden getauscht am Quellspeicherort. Ein transponierter Bereich wird entlang der Hauptdiagonalen umgekehrt, sodass die Zeilen 1, 2 und 3 zu den Spalten A, B und C werden.

Das folgende Codebeispiel und die folgenden Bilder veranschaulichen dieses Verhalten in einem einfachen Szenario.

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets.getItem("Sample");
    // Copy a range, omitting the blank cells so existing data is not overwritten in those cells.
    sheet.getRange("D1").copyFrom("A1:C1",
        Excel.RangeCopyType.all,
        true, // skipBlanks
        false); // transpose
    // Copy a range, including the blank cells which will overwrite existing data in the target cells.
    sheet.getRange("D2").copyFrom("A2:C2",
        Excel.RangeCopyType.all,
        false, // skipBlanks
        false); // transpose
    await context.sync();
});

Daten vor dem Kopieren und Einfügen des Bereichs

Daten in Excel, bevor die Kopiermethode des Bereichs ausgeführt wurde.

Daten nach dem Kopieren und Einfügen des Bereichs

Daten in Excel, nachdem die Kopiermethode des Bereichs ausgeführt wurde.

Zellen ausschneiden und einfügen (verschieben)

Die Range.moveTo-Methode verschiebt Zellen an eine neue Position in der Arbeitsmappe. Dieses Verhalten der Zellverschiebung funktioniert genauso wie beim Verschieben von Zellen durch Ziehen des Bereichsrahmens oder beim Ausführen der Aktionen Ausschneiden und Einfügen . Sowohl die Formatierung als auch die Werte des Bereichs werden an die als destinationRange Parameter angegebene Position verschoben.

Im folgenden Codebeispiel wird ein Bereich mit der Range.moveTo -Methode verschoben. Beachten Sie, dass, wenn der Zielbereich kleiner als die Quelle ist, er erweitert wird, um den Quellinhalt einzuschließen.

await Excel.run(async (context) => {
    let sheet = context.workbook.worksheets.getActiveWorksheet();
    sheet.getRange("F1").values = [["Moved Range"]];

    // Move the cells "A1:E1" to "G1" (which fills the range "G1:K1").
    sheet.getRange("A1:E1").moveTo("G1");
    await context.sync();
});

Siehe auch