Use a macro ONLYOFFICE para copiar planilhas

9 novembro 2023By Klaibson

Editar planilhas pode ser complicado, especialmente ao lidar com diversas planilhas com dados semelhantes. Para facilitar seu processo, vamos criar uma macro que copia dados de uma planilha para outra e ajuda você a lidar facilmente com planilhas grandes.

Use a macro ONLYOFFICE para copiar planilhas

Construindo a macro

Primeiro, acessamos a planilha atual no editor. Em seguida, acessamos a planilha para a qual queremos copiar na variável pastesheet, seguindo a variável oRange que especifica o intervalo em que queremos trabalhar.

  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");
  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

Nota: Se você quiser trabalhar em uma seleção, use o método GetSelection() descomentando a linha acima.

A seguir, usamos o método for each no intervalo especificado, para iterar em cada célula do intervalo.

oRange.ForEach(function (range) {

Utilizando o parâmetro range na função de retorno de chamada, obtemos acesso aos dados de cada célula, a partir da primeira célula.

  const oValue = range.GetValue();
  const oCharacters = range.GetCharacters(0, 2);
  const oFont = oCharacters.GetFont();
  const fontName = oFont.GetName();
  const oSize = oFont.GetSize();
  const isBold = oFont.GetBold();
  const isItalic = oFont.GetItalic();

No método ForEach, primeiro extraímos o valor da célula. A seguir extraímos os caracteres iniciais do valor para conhecer seus parâmetros como negrito, itálico e etc. Em seguida obtemos o fontName, seguido do tamanho da fonte, para implementá-los na nova planilha.

if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    }

Antes de colocar os valores na nova planilha, executamos algumas verificações usando loops if else para garantir que as células vazias estejam representadas corretamente na nova planilha, conforme mostrado acima.

else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);
      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }

Finalmente, no loop else, colocamos os valores em suas células correspondentes e, em seguida, damos a essas células suas propriedades como negrito, itálico, nome da fonte e tamanho da fonte.

A macro completa

Eis o código completo da macro:

(function () {
  const oWorksheet = Api.GetActiveSheet();
  const pastesheet = Api.GetSheet("Sheet2");
  const oRange = oWorksheet.GetRange("A1:C10");

  // If you want to copy a specific Selection to the new sheet
  // var oRange = oWorksheet.GetSelection();

  oRange.ForEach(function (range) {
    const oValue = range.GetValue();
    const oCharacters = range.GetCharacters(0, 2);
    const oFont = oCharacters.GetFont();
    const fontName = oFont.GetName();
    const oSize = oFont.GetSize();
    const isBold = oFont.GetBold();
    const isItalic = oFont.GetItalic();
    if (oValue === null || oValue === "") {
      pastesheet.GetRange(range).SetValue(" ");
    } else {
      oFont.SetName(fontName);
      pastesheet.GetRange(range).SetValue(oValue);
      pastesheet.GetRange(range).SetFontName(fontName);
      pastesheet.GetRange(range).SetFontSize(oSize);
      oWorksheet.GetRange(range).AutoFit(false, true);

      if (isBold) {
        pastesheet.GetRange(range).SetBold(true);
      }
      if (isItalic) {
        pastesheet.GetRange(range).SetItalic(true);
      }
    }
  });
})();

Alguns pontos-chave a serem lembrados:

  1. Certifique-se de que o nome da planilha especificado na macro exista e seja preferencialmente uma planilha em branco.
  2. Certifique-se de executar a macro na planilha principal (a planilha pai) e não na planilha recém-criada.

Vamos executar nossa macro e ver como funciona!

Aqui está outro exemplo da macro trabalhando com o método GetSelection():

Esperamos que a macro seja uma ótima ferramenta em suas tarefas diárias de edição de planilhas!

Não perca a chance de aproveitar o poder da API ONLYOFFICE. Nossa extensa biblioteca de métodos API é a chave para transformar suas ideias em realidade. Se você tiver alguma dúvida ou conceitos inovadores, encorajamos você a compartilhar conosco. Sua contribuição é altamente valorizada e estamos entusiasmados com a possibilidade de colaborar com você. Boa sorte em seus empreendimentos exploratórios!