Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы
Редакторы
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Облачный офис
Облачный офис
Почта
Почта
Органайзер
Органайзер
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Конвертация макросов MS VBA

Обновлено: 06.10.24

Макросы в редакторах отличаются от макросов, используемых в программах Microsoft, поскольку в программных продуктах Microsoft используется скриптовый язык Visual Basic для приложений (VBA). Язык JavaScript является более гибким и может использоваться на любой платформе (что важно, поскольку наши редакторы доступны на разных платформах).

Это может быть причиной определённых неудобств в том случае, если до этого вы работали с Microsoft Office с использованием макросов, поскольку они несовместимы с макросами на JavaScript. Однако вы можете сконвертировать ваши старые макросы и использовать их с новыми редакторами.

Это не сложный процесс. Рассмотрим пример:

Sub Example() 
    Dim myRange 
    Dim result 
    Dim Run As Long 

    For Run = 1 To 3 
        Select Case Run 
        Case 1 
            result = "=SUM(A1:A100)" 
        Case 2 
            result = "=SUM(A1:A300)" 
        Case 3 
            result = "=SUM(A1:A25)" 
        End Select 
        ActiveSheet.range("B" & Run) = result 
    Next Run 
End Sub

Макрос выше считает сумму значений из трёх диапазонов ячеек столбца A и помещает результат в три ячейки столбца B.

Всё то же самое можно выполнить с помощью макросов JavaScript, код будет выглядеть почти идентично и легко читаем, если вы знаете и Visual Basic для приложений и JavaScript:

(function() 
{ 
    for (let run = 1; run <= 3; run++) 
    { 
        var result = ""; 
        switch (run) 
        { 
            case 1: 
                result = "=SUM(A1:A100)"; 
                break; 
            case 2: 
                result = "=SUM(A1:A300)"; 
                break; 
            case 3: 
                result = "=SUM(A1:A25)"; 
                break; 
            default: 
                break; 
            } 
            Api.GetActiveSheet().GetRange("B" + run).Value = result; 
    } 
})();

Таким же образом можно сконвертировать любой другой скрипт, написанные на Visual Basic для приложений, в код JavaScript, который будет совместим с нашими редакторами.