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

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

Создайте диалог пользовательской формы

  1. На своем компьютере откройте преобразованный файл в Google Sheets .
  2. Вверху нажмите Расширения > ** Скрипт приложений**.
  3. В левой части редактора рядом с пунктом «Файлы» нажмите « файл» > «HTML» . Мы рекомендуем присвоить HTML-файлу то же имя, что и у исходной пользовательской формы VBA.
  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 Sheet и перезагрузите страницу.
  10. В верхней части Google Таблицы нажмите «Форма пользователя» > «Показать форму» .

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

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

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

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

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