Transformando uma macro do Microsoft Office em uma macro do ONLYOFFICE

17 julho 2023Por Klaibson

Você já se perguntou como converter suas macros VBA do Microsoft Office em macros que funcionam perfeitamente com o ONLYOFFICE? Embora não haja uma solução direta para essa conversão, neste artigo, vamos orientá-lo nas etapas de transformação de uma macro VBA que nos foi enviada por um de nossos usuários.

Transformando uma macro do Microsoft Office em uma macro do ONLYOFFICE

Macro VBA

Aqui está a macro VBA original:

Sub Button1_Click()
    Dim mycel As Range
    For Each mycel In Columns("D:D").SpecialCells(xlCellTypeConstants, 23)
        If mycel = [TODAY()] Then mycel.Offset(0, 1) = [This_value]
    Next
End Sub

Esta macro verifica a coluna D em busca de células com um valor constante de 23 e verifica se o valor de cada célula é igual ao valor na célula marcada como [TODAY(]. Se os valores corresponderem, ela atualiza a célula na próxima coluna, compensando por um coluna à direita, com o valor na célula denominada [This_value].

Transformando uma macro do Microsoft Office em uma macro do ONLYOFFICE

Construindo a macro do ONLYOFFICE

Para converter esta macro em uma macro JavaScript compatível com o ONLYOFFICE, podemos aproveitar o ONLYOFFICE API.

Na macro do ONLYOFFICE, começamos obtendo a planilha ativa usando a função Api.GetActiveSheet(). Em seguida, recuperamos os valores das células A2 e A4, que correspondem a [TODAY()] e [This_value] na macro VBA:

var sheet = Api.GetActiveSheet();
var dateValue = sheet.GetRange("A2").GetValue();
var updateValue = sheet.GetRange("A4").GetValue();

Em seguida, definimos o intervalo de células que queremos iterar usando sheet.GetRange(“D1:D10”). Este intervalo representa a coluna D neste exemplo, mas você pode ajustá-lo de acordo com suas necessidades específicas:

var dateRange = sheet.GetRange("D1:D10");

Usamos a função ForEach para iterar sobre cada célula no intervalo definido. Para cada célula, recuperamos o valor atual usando range.GetValue() e comparamos com o valor na célula A2. Se forem iguais, obtemos o número da linha da célula atual usando range.GetRow() e, em seguida, obtemos a célula correspondente na coluna E usando sheet.GetRange(“E” + row):

dateRange.ForEach(function(range) {
  var currentDate = range.GetValue();
  // Check if the current date matches the value in cell A2
  if (currentDate === dateValue) {
    // Get the corresponding cell in column E
    var row = range.GetRow();
    var oRange = sheet.GetRange("E" + row);  }
});

Finalmente, atualizamos o valor na próxima célula (compensado por uma coluna à direita) com o valor da célula A4 usando o Range.SetValue(updateValue):

   // Update the value in the next cell
    oRange.SetValue(updateValue);
  }
});

Todo o código da macro é o seguinte:

(function()
{
    var sheet = Api.GetActiveSheet();
var dateValue = sheet.GetRange("A2").GetValue();
var updateValue = sheet.GetRange("A4").GetValue();
var dateRange = sheet.GetRange("D1:D10");
dateRange.ForEach(function(range) {
  var currentDate = range.GetValue();
  // Check if the current date matches the value in cell A2
  if (currentDate === dateValue) {
    // Get the corresponding cell in column E
    var row = range.GetRow();
    var oRange = sheet.GetRange("E" + row);
    // Update the value in the next cell
    oRange.SetValue(updateValue);
  }
});
})();

Vamos executar a macro e  ver como ela funciona.

Concluindo, não há conversão direta de macros VBA para macros JavaScript para o ONLYOFFICE. No entanto, você pode usar suas macros VBA existentes como referência ao criar macros para o ONLYOFFICE. Aproveitando os métodos da API do ONLYOFFICE e fazendo os ajustes necessários, você pode obter uma funcionalidade semelhante.

Embora possa exigir alguma reestruturação de código, o processo é administrável. Esperamos que, com um pouco de orientação, que demonstrou como no artigo, você possa criar macros poderosas do ONLYOFFICE com sucesso. Abrace as possibilidades, aproveite os benefícios e boa sorte em seus empreendimentos exploratórios!

Crie sua conta gratuita no ONLYOFFICE

Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.