Решайте распространенные проблемы

Ниже перечислены распространенные проблемы, с которыми вы можете столкнуться при преобразовании кода VBA в скрипт приложений с помощью конвертера макросов.

Печать

API VBA, которые печатают файлы, автоматически преобразуются в Apps Script, но могут вести себя иначе, чем исходный API VBA. Ниже приведены два примера:

API VBA Поведение в скрипте приложений
PrintOut Конвертируется в Apps Script, но API Apps Script печатает в файл, а не на принтере. Вы можете распечатать PDF-файл вручную.
PrintToFile Конвертируется в Apps Script. PDF-файл сохраняется в папке MyDrive.

Неконвертированные элементы

Следующие объекты не конвертируются макроконвертером и должны быть преобразованы вручную:

Триггеры

Два типа триггеров — сочетания клавиш и некоторые триггеры, основанные на событиях, — не конвертируются конвертером макросов. Во многих случаях эти триггеры можно создать вручную.

Сочетания клавиш

Чтобы добавить сочетания клавиш, выполните шаги по импорту функций как макросов .

Триггеры на основе событий

Некоторые события из кода VBA, такие как BeforeClose или BeforeSave , не имеют эквивалентов в Apps Script, но вы можете создать обходной путь.

Для таких событий, как BeforeClose , вы можете создать пользовательское меню или кнопку, нажатие которой позволит выполнить действие, которое необходимо выполнить перед закрытием электронной таблицы.

Поскольку Google Таблицы автоматически сохраняют каждое редактирование, обходные пути для событий, таких как BeforeSave , невозможны.

Пользовательские формы

В VBA пользовательская форма (UserForm) — это окно или диалоговое окно в пользовательском интерфейсе приложения (UI). Конвертер макросов (Macro Converter) не преобразует пользовательские формы (UserForm). Вы можете создать их вручную в Apps Script.

Создать диалоговую форму пользователя

  1. Откройте преобразованный файл в Google Таблицах на вашем компьютере.
  2. В верхней части нажмите Расширения > **Скрипт приложений**.
  3. В левой части редактора, рядом с разделом «Файлы», нажмите « файл» > «HTML» . Рекомендуем дать HTML-файлу то же имя, что и исходной форме VBA UserForm.
  4. Добавьте поля и информацию, которые вы хотите отобразить в форме. Узнайте больше о HTML-формах на сайте W3school.com .
  5. Слева щелкните файл Apps Script (файл GS), содержащий преобразованный код.
  6. Если в вашем коде уже есть триггер onOpen() , добавьте в него код ниже. Если в вашем коде нет триггера onOpen() , добавьте код ниже.
    function onOpen() {
     SpreadsheetApp.getUi()
         .createMenu('User Form')
         .addItem('Show Form', 'showForm')
         .addToUi();
    }
    function showForm() {
     var html = HtmlService.createHtmlOutputFromFile('userform_module_name')
         .setWidth(100)
         .setTitle('Sign-up for Email Updates');
     SpreadsheetApp.getUi().showSidebar(html);
    }
        
  7. Замените userform_module_name на имя добавленного вами HTML-файла.
  8. В верхней части нажмите Сохранить проект .
  9. Переключитесь на Google Таблицу и перезагрузите страницу.
  10. В верхней части Google Таблицы нажмите Форма пользователя > Показать форму .

Именованные диапазоны

В Excel именованные диапазоны — это имена, присвоенные одной ячейке или диапазону ячеек.

При конвертации файла Excel в Google Таблицы некоторые типы именованных диапазонов не будут преобразованы, поскольку они не поддерживаются. Ниже приведены два примера:

Неподдерживаемые именованные диапазоны Описание
Таблицы Не поддерживается в Google Таблицах, но есть обходной путь.

Чтобы воссоздать этот именованный диапазон в Таблицах, добавьте именованный диапазон, указывающий на нотацию A1 табличного диапазона. Используйте то же имя, что и у исходного именованного диапазона в коде VBA, чтобы преобразованный код распознал его.
Список диапазонов Не поддерживается в Google Таблицах. Обходного пути нет.