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