Нейросеть для макросов Excel: VBA-код по описанию задачи
Как сформулировать задачу для модели, чтобы получить рабочий макрос VBA, как проверить его на копии файла и что делать с ошибками Run-time error.
5 мин · · автоматизация · разработка
Нейросеть для написания макросов Excel экономит время там, где вы знаете, что хотите получить, но не помните синтаксис VBA. Модель пишет код по описанию, а вы запускаете его в редакторе Visual Basic. Главное условие успеха не в модели, а в формулировке задачи и в аккуратной проверке: макрос меняет данные, и отменить его действие обычной кнопкой «Отменить» нельзя. Ниже порядок работы, пример готового макроса, разбор типичных ошибок и вызов модели из скрипта.
Как описать задачу
Модель не видит вашу книгу, поэтому всё, что очевидно вам, нужно написать словами. В описании должны быть:
- Структура данных. Название листа, в какой строке заголовки, какие столбцы и что в них.
- Действие. Что сделать: удалить, посчитать, скопировать, раскрасить.
- Границы. С какой строки, до какой, по какому столбцу искать последнюю строку.
- Крайние случаи. Что делать с пустыми ячейками, текстом вместо чисел, пустым листом.
- Результат. Куда положить итог: на тот же лист, на новый, в сообщение.
- Версия и система. Excel для Windows или для Mac: часть объектов VBA на Mac недоступна.
Пример плохой постановки: «Удали лишнее». Хорошей: «Лист "Продажи", заголовки в строке 1, данные с A2. Удали полностью пустые строки (все ячейки пусты). Проходи снизу вверх. Макрос для Excel на Windows, используй Option Explicit и комментарии на русском».
Не отправляйте в запрос реальные данные: достаточно заголовков и двух-трёх вымышленных строк.
Пример результата
Вот макрос, который получается из приведённой выше постановки:
Option Explicit
Sub DeleteEmptyRows()
Dim ws As Worksheet
Dim lastRow As Long, r As Long
' Лист с данными
Set ws = ThisWorkbook.Worksheets("Продажи")
' Последняя строка по всему используемому диапазону
lastRow = ws.UsedRange.Rows.Count + ws.UsedRange.Row - 1
Application.ScreenUpdating = False
' Идём снизу вверх, чтобы сдвиг строк не сбивал счёт
For r = lastRow To 2 Step -1
If Application.WorksheetFunction.CountA(ws.Rows(r)) = 0 Then
ws.Rows(r).Delete
End If
Next r
Application.ScreenUpdating = True
End SubОбратите внимание на два решения, которые стоит проверять в любом макросе. Строки проходят снизу вверх: при удалении строки нижележащие сдвигаются вверх, и при проходе сверху вниз часть строк пропустилась бы. Последняя строка берётся из UsedRange, а не из столбца A: если бы мы искали последнюю заполненную ячейку в одном столбце, строки с данными только в других столбцах, лежащие ниже, остались бы необработанными. Это типичная скрытая ошибка в сгенерированном коде, поэтому спрашивайте у модели: «по какому столбцу ты определяешь последнюю строку и что будет, если он пуст?».
Как безопасно проверить макрос
Макрос выполняется сразу и обычно очищает стек отмены. Проверка должна быть заранее:
- Работайте на копии файла. Сохраните книгу под другим именем и запускайте макрос на ней. Это главное правило.
- Прочитайте код до запуска. Особенно настораживают вызовы
Kill,Shell,CreateObject, работа с сетью,Workbooks.Openпо неожиданным путям. Если не понимаете строку, спросите модель, что она делает. - Запустите по шагам. В редакторе VBA нажимайте F8 на небольшой тестовой книге и следите за значениями переменных.
- Проверьте крайние случаи. Пустой лист, одна строка данных, ячейки с формулами, скрытые строки, объединённые ячейки.
- Сохраняйте как .xlsm. В обычном .xlsx макросы не сохраняются.
- Не включайте макросы из чужих файлов. Это относится к чужим книгам, а не к коду, который вы сами прочитали.
Что делать с ошибками выполнения
Когда макрос падает, Excel показывает окно «Run-time error» с номером. Скопируйте номер, текст и строку, подсвеченную после нажатия Debug, и отправьте модели вместе с кодом. Частые случаи:
| Ошибка | Что обычно значит |
|---|---|
| Run-time error 9: Subscript out of range | Нет листа или книги с таким именем, проверьте название «Продажи» |
| Run-time error 13: Type mismatch | В ячейке текст там, где ожидалось число, или ошибка #Н/Д |
| Run-time error 1004 | Общая ошибка приложения: защищённый лист, неверный диапазон, объединённые ячейки |
| Run-time error 424: Object required | Переменная не присвоена: забыт Set |
Когда просите исправить, давайте полный контекст: код, номер и текст ошибки, строку, значения переменных, если знаете. Фраза «не работает» ничего не даёт.
Генерация макроса из скрипта
Если макросы нужны регулярно, постановку можно вынести в скрипт. Пример на Python с OpenAI SDK:
from openai import OpenAI
client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_ваш_ключ")
task = """Лист "Продажи", заголовки в строке 1, данные с A2.
Столбцы: A дата, B менеджер, C сумма.
Нужен макрос Excel для Windows: на новом листе "Итоги" посчитать сумму по каждому менеджеру.
Используй Option Explicit, комментарии на русском, обработку пустого листа."""
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[
{"role": "system", "content": "Ты пишешь макросы VBA для Excel. Отвечай только кодом в блоке vba, без пояснений."},
{"role": "user", "content": task},
],
max_tokens=1500,
)
print(resp.choices[0].message.content)Модель можно выбирать по вашим проверкам. Для коротких макросов обычно хватает недорогих вариантов, для сложных пробуйте сильнее; подход описан в статье какая модель лучше пишет код на Python, принцип тот же. Формат запроса к /v1/chat/completions описан в документации.
Сколько это стоит
Цены на 18 октября 2026. Пусть запрос на макрос занимает 500 токенов входа, ответ 1 000 токенов:
claude-sonnet-5-5(0.4 / 2 за 1 млн): 0.0005 × 0.4 + 0.001 × 2 = 0.0002 + 0.002 = $0.0022gpt-6.1-sol(0.27 / 1.32): 0.0005 × 0.27 + 0.001 × 1.32 = 0.000135 + 0.00132 ≈ $0.0015
Тысяча таких макросов обойдётся примерно в $2.2 и $1.5. Основная трата времени уходит на проверку, не на токены. Цены меняются, актуальный список: GET https://api.zukko.pro/v1/models.
Если вам нужны не макросы, а формулы, смотрите разбор нейросеть для формул Excel; для таблиц в браузере есть скрипты Google Sheets. Ключ создаётся в кабинете.
Частые вопросы
Можно ли доверять макросу, который написала нейросеть?
Только после проверки. Читайте код, запускайте на копии файла и на небольшой выборке, смотрите крайние случаи. Модель может написать правдоподобный, но неверный код.
Нужно ли знать VBA, чтобы использовать нейросеть?
Базовое понимание помогает прочитать код и найти проблему, но начать можно и без него: просите модель добавить комментарии на русском и объяснить каждый шаг.
Что делать, если макрос работает на моём ПК, а у коллеги нет?
Скорее всего, дело в различиях версий или системы: объекты вроде Scripting.Dictionary недоступны в Excel для Mac. Укажите в запросе систему и версию Excel.
Работает ли это с Google Таблицами?
Нет, VBA относится к Excel. Для Google Таблиц используют Apps Script; модель можно попросить написать и его, указав это в задаче.
zukko
Платите в 25×
меньше
за Claude Code & ChatGPT
Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.
Похожие статьи
- Перевод субтитров нейросетью: SRT без сбитых таймкодовГлавный риск при переводе SRT нейросетью — сломанная структура файла. Показываем схему, где таймкоды не попадают к модели, и скрипт на Python с проверкой.
- Редактирование текстов нейросетью: корректура, стиль и сокращениеРазные виды редактуры требуют разных промптов. Показываем формулировки для корректуры, стиля и сокращения, как получать правки с объяснением и не терять авторский голос.
- Нейросеть для написания скриптов: Bash, PowerShell и PythonМодель быстро пишет скрипты для рутины, но запускать их вслепую нельзя. Показываем, как ставить задачу, требовать безопасный режим dry-run и проверять результат до запуска.
- Dify в Docker: установка, первичная настройка и подключение моделейСтавим Dify через Docker Compose, создаём администратора и подключаем модели Claude, GPT и DeepSeek по одному ключу. Отдельно — что делать, если контейнеры не стартуют.