Можно ли создавать / редактировать макрос Excel из Python? - PullRequest
4 голосов
/ 28 марта 2012

В настоящее время я работаю над проектом, который требует от меня написания (казалось бы, бесконечной) серии макросов для воспроизведения сводных таблиц, разработанных одним из наших аналитиков. Детали меняются, но код в значительной степени совпадает от примера к примеру.

Я хотел бы программно сгенерировать код vba на основе нескольких параметров, а затем добавить макрос в заданную таблицу. Можно ли создать макрос Excel с Python, используя Win32com или другой? Можно ли создать макрос Excel из другого макроса Excel? Есть другие идеи?

Project Background, у меня есть скрипт Python, который делает следующее:

  • извлекает данные Google Analytic
  • делает различные анализы
  • записывает результаты в Excel
  • запускает предварительно написанный макрос для преобразования данных в прекрасно отформатированную сводную таблицу
  • рассылает его по электронной почте людям, которые, вероятно, не читают его *

1 Ответ

1 голос
/ 28 марта 2012

Да, вы можете создать макрос Excel с другим макросом Excel.Чтобы это работало, вам нужно указать Excel доверять доступ к объектной модели проекта VBA.(Параметр находится в разделе «Параметры макроса» в центре управления безопасностью.) Я не знаю, можете ли вы сделать это из Python, но если вы можете, вам, вероятно, также нужно сказать Excel, что все в порядке.

Для простоты кодирования, если вы делаете это в Excel, добавьте ссылку на Micorsoft Visual Basic для приложений Расширяемость .

Возможно, вы также захотите проверить MZ-Tools 3.0 Я считаю, что это очень полезно для добавления стандартного \ общего кода в проект.

С другой стороны, ваш проект кажется готовым для повторного использования кода.Если общий код сводной таблицы находится в одном классе / модуле, его действительно легко скопировать из одного открытого проекта Excel в другой.(Просто щелкните и перетащите в окне Project Explorer.) Вы также можете экспортировать его в текстовый файл и позже импортировать обратно в другой проект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...