Umwandlung eines Microsoft Office-Makros in ein ONLYOFFICE-Makro

6 Juli 2023By Vlad

Haben Sie schon einmal darüber nachgedacht, wie Sie Ihre Microsoft Office VBA-Makros in Makros umwandeln können, die nahtlos mit ONLYOFFICE funktionieren? Es gibt zwar keine direkte Lösung für diese Konvertierung, aber in diesem Artikel werden wir Sie durch die Schritte zur Umwandlung eines VBA-Makros führen, das von unserem Benutzer zugesandt wurde.

Transforming a Microsoft Office macro into an ONLYOFFICE macro

VBA-Makro

Hier ist das ursprüngliche VBA-Makro:

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

Dieses Makro durchsucht Spalte D nach Zellen mit einem konstanten Wert von 23 und prüft, ob der Wert jeder Zelle gleich dem Wert in der Zelle mit der Bezeichnung [TODAY(] ist. Wenn die Werte übereinstimmen, wird die Zelle in der nächsten Spalte, um eine Spalte nach rechts versetzt, mit dem Wert in der Zelle mit der Bezeichnung [This_value] aktualisiert.

Transforming a Microsoft Office macro into an ONLYOFFICE macro

Aufbau des ONLYOFFICE-Makros

Um dieses Makro in ein JavaScript-Makro zu konvertieren, das mit ONLYOFFICE kompatibel ist, können wir die ONLYOFFICE-API nutzen.

Im ONLYOFFICE-Makro ermitteln wir zunächst das aktive Blatt mit der Funktion Api.GetActiveSheet(). Dann rufen wir die Werte aus den Zellen A2 und A4 ab, die im VBA-Makro [HEUTE()] und [Dieser_Wert] entsprechen:

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

Als Nächstes definieren wir mit sheet.GetRange(“D1:D10”) den Bereich der Zellen, über die wir iterieren wollen. Dieser Bereich entspricht in diesem Beispiel der Spalte D, aber Sie können ihn an Ihre spezifischen Bedürfnisse anpassen:

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

Wir verwenden die Funktion ForEach, um jede Zelle des definierten Bereichs zu durchsuchen. Für jede Zelle wird der aktuelle Wert mit range.GetValue() abgefragt und mit dem Wert in Zelle A2 verglichen. Wenn sie übereinstimmen, ermitteln wir die Zeilennummer der aktuellen Zelle mit range.GetRow() und rufen dann die entsprechende Zelle in Spalte E mit sheet.GetRange(“E” + row) ab:

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

Schließlich aktualisieren wir den Wert in der nächsten Zelle (um eine Spalte nach rechts versetzt) mit dem Wert aus Zelle A4 mit oRange.SetValue(updateValue):

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

Der gesamte Makrocode lautet wie folgt:

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

Führen wir das Makro aus und sehen wir uns an, wie das Makro funktioniert!

Zusammenfassend lässt sich sagen, dass es keine direkte Konvertierung von VBA-Makros in JavaScript-Makros für ONLYOFFICE gibt. Sie können jedoch Ihre vorhandenen VBA-Makros als Referenz verwenden, wenn Sie Makros für ONLYOFFICE erstellen. Indem Sie die Methoden der ONLYOFFICE-API nutzen und die notwendigen Anpassungen vornehmen, können Sie ähnliche Funktionen erreichen.

Es ist zwar eine gewisse Umstrukturierung des Codes erforderlich, aber der Prozess ist überschaubar. Wir hoffen, dass Sie mit den in diesem Artikel beschriebenen Anleitungen erfolgreich leistungsstarke ONLYOFFICE-Makros erstellen können. Nutzen Sie die Möglichkeiten, genießen Sie die Vorteile, und viel Erfolg bei Ihren Versuchen!