Compartir a través de


Cortar, copiar y pegar intervalos mediante la API de JavaScript de Excel

En este artículo se proporcionan ejemplos de código que cortan, copian y pegan intervalos mediante la API de JavaScript de Excel. Para obtener la lista completa de propiedades y métodos que admite el Range objeto, vea Clase Excel.Range.

Nota:

La API de JavaScript para Excel no tiene un objeto o clase de "Celda". En su lugar, se definen todas las celdas de Excel como objetos Range. Una celda individual en la interfaz de usuario de Excel se traduce en un objeto Range con una celda en la API de JavaScript para Excel. Un solo objeto Range también puede contener varias celdas contiguas. Consulte Trabajar con celdas mediante la API de JavaScript para Excel para obtener más información.

Sugerencia

Para experimentar con las API de cortar, copiar y pegar de este artículo en un ejemplo completo, abra El laboratorio de scripts en Excel y seleccione Copiar y pegar rangos en nuestra biblioteca de ejemplos .

Copy and paste

El método Range.copyFrom replica las acciones Copiar y Pegar de la interfaz de usuario de Excel. El destino es el Range objeto al que copyFrom se llama. El origen que se va a copiar se pasa como un rango o una dirección de cadena que representa un rango.

El siguiente ejemplo de código copia los datos de A1:E1 en el rango que empieza en G1 (que pega en G1:K1).

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 tiene tres parámetros opcionales

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

copyType especifica qué datos se copian del origen en el destino.

  • Excel.RangeCopyType.formulas transfiere las fórmulas en las celdas de origen y conserva el posicionamiento relativo de los intervalos de esas fórmulas. Las entradas que no corresponden a fórmulas se copian tal como están.
  • Excel.RangeCopyType.values copia los valores de datos y, en el caso de las fórmulas, el resultado de la fórmula.
  • Excel.RangeCopyType.formats copia el formato del intervalo, incluidos la fuente, el color y otras opciones de formato, pero sin valores.
  • Excel.RangeCopyType.all (la opción predeterminada) copia los datos y el formato, conservando las fórmulas de las celdas si se encuentran.

skipBlanks establece si las celdas en blanco se copian en el destino. Cuando es true, copyFrom omite las celdas en blanco en el intervalo de origen. Las celdas omitidas no sobrescribirán los datos existentes de las celdas correspondientes en el intervalo de destino. El valor predeterminado es falso.

transpose determina si se trasladan los datos, lo que significa que sus filas y columnas se cambian a la ubicación de origen. Un rango cambiado se voltea a lo largo de la diagonal principal, por lo que las filas 1, 2, y 3 se convertirán en las columnas A, B, y C.

El siguiente ejemplo de código y las imágenes muestran este comportamiento en un escenario simple.

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();
});

Datos antes de copiar y pegar el intervalo

Datos en Excel antes de que se haya ejecutado el método de copia del rango.

Datos después de copiar y pegar el intervalo

Datos en Excel después de ejecutar el método de copia del intervalo.

Cortar y pegar celdas (mover)

El método Range.moveTo mueve las celdas a una nueva ubicación del libro. Este comportamiento de movimiento de celda funciona igual que cuando las celdas se mueven arrastrando el borde del rango o al realizar las acciones Cortar y Pegar . Tanto el formato como los valores del intervalo se mueven a la ubicación especificada como destinationRange parámetro.

En el ejemplo de código siguiente se mueve un intervalo con el Range.moveTo método . Tenga en cuenta que si el intervalo de destino es menor que el origen, se expandirá para abarcar el contenido de origen.

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();
});

Consulte también