Transformando uma macro do Microsoft Office em uma macro do ONLYOFFICE
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.
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].
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.