В этом руководстве перечислены распространенные проблемы, с которыми вы можете столкнуться при преобразовании кода Visual Basic for Applications (VBA) в Apps Script с помощью конвертера макросов.
Файлы для печати
API-интерфейсы VBA, предназначенные для печати файлов, автоматически преобразуются в Apps Script, но могут вести себя иначе, чем исходный API VBA. В следующей таблице приведены два примера:
| API VBA | Поведение в Apps Script |
|---|---|
PrintOut | Преобразует в Apps Script, но API Apps Script выводит данные в файл, а не на принтер. Необходимо распечатать PDF-файл вручную. |
PrintToFile | Преобразует в Apps Script. PDF-файл сохраняется в папке «Мой Диск». |
Неконвертированные товары
Следующие параметры не преобразуются макроконвертером и требуют ручного преобразования:
- Некоторые типы триггеров
- Пользовательские формы
- Неподдерживаемые типы именованных диапазонов
Триггеры
Два типа триггеров — сочетания клавиш и некоторые триггеры, срабатывающие по событиям, — не преобразуются макроконвертером. Во многих случаях эти триггеры можно создать вручную.
Клавиатурные сочетания
Чтобы добавить сочетания клавиш, выполните действия по импорту функций в качестве макросов .
триггеры на основе событий
Некоторые события из кода VBA, такие как BeforeClose или BeforeSave , не имеют аналогов в Apps Script, но вы можете попробовать найти обходное решение.
Для таких событий, как BeforeClose , вы можете создать пользовательское меню или кнопку, нажатие на которую выполнит действие, необходимое перед закрытием электронной таблицы.
Обходные пути для события BeforeSave невозможны, поскольку Google Sheets автоматически сохраняет изменения по мере их внесения.
Пользовательские формы
В VBA пользовательская форма (UserForm) — это окно или диалоговое окно в пользовательском интерфейсе (UI) приложения. Макрос-конвертер не преобразует пользовательские формы. Создавайте их вручную в Apps Script.
Создать диалоговое окно формы пользователя
- Откройте преобразованный файл в Google Sheets на своем компьютере.
- Вверху нажмите «Расширения» > **Apps Script**.
- В левой части редактора, рядом с кнопкой «Файлы», нажмите « файл» > «HTML» . Рекомендуем присвоить HTML-файлу то же имя, что и исходной пользовательской форме VBA.
- Добавьте поля и информацию, которые вы хотите отобразить в своей форме. Узнайте больше о формах HTML на сайте W3school.com .
- Слева щелкните файл Apps Script (файл GS), содержащий преобразованный код.
- Если в вашем коде уже есть триггер
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); }
- Замените
userform_module_nameна имя добавленного вами HTML-файла. - Вверху нажмите « проект».
- Переключитесь на таблицу Google и перезагрузите страницу.
- В верхней части таблицы Google Sheets нажмите «Форма пользователя» > «Показать форму» .
Именованные диапазоны
В Excel именованные диапазоны — это имена, присвоенные отдельной ячейке или диапазону ячеек.
При преобразовании файлов Excel в электронные таблицы некоторые именованные типы диапазонов не преобразуются, поскольку они не поддерживаются. В следующей таблице приведены распространенные примеры:
| Неподдерживаемые именованные диапазоны | Описание |
|---|---|
| Таблицы | В Google Sheets это не поддерживается, но есть обходное решение. Чтобы воссоздать этот именованный диапазон в Google Sheets, добавьте именованный диапазон, указывающий на ячейку A1 диапазона таблицы. Используйте то же имя, что и у исходного именованного диапазона, в вашем коде VBA, чтобы преобразованный код его распознал. |
| Список диапазонов | В Google Sheets это не поддерживается. Обходного пути нет. |
Статьи по теме
- Обзор дополнения Macro Converter для Google Workspace
- Определите, совместимы ли макросы VBA.
- Преобразование макросов VBA в Apps Script
- Исправьте ошибки в преобразованном коде.
- Посмотрите обучающие видеоролики по Macro Converter.
- Список совместимых API VBA