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

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

Обновлено: 07.10.24

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

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

Это может быть причиной некоторых неудобств, если вы ранее использовали Microsoft Office с макросами, так как они станут несовместимы с макросами Р7. Вы можете преобразовать ранее использовавшиеся макросы, чтобы использовать их с новыми редакторами.

Процесс не слишком сложный. Давайте посмотрим на следующий пример:

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.

Того же самого можно добиться с помощью макросов Р7, код будет практически идентичен и прост для понимания, если вы знаете как 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, совместимый с макросами Р7.