У меня есть некоторый код Python, который выполняет запрос к базе данных, доступной только для чтения с моей стороны, и выводит мне электронную таблицу Excel с соответствующими данными, которые я хочу для визуализации. У меня есть несколько макросов, которые обрабатывают данные, создают и редактируют графики и позволяют мне «фильтровать» несколько разных способов (каждый «фильтр» - это несколько обычных фильтров - удобно по сравнению с выбором / очисткой нескольких фильтров вручную).

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

Есть ли способ использовать макрос, чтобы вставить несколько других макросов, запустить некоторые из них и вставить кнопки макросов или раскрывающийся список для запуска бита фильтрации? Если нет, может ли это быть сделано (или должно быть сделано) со стороны Python, когда он генерирует мои файлы Excel?

Изменить: код Python был написан кем-то еще, и я не знаю Python. Он печатает данные, используя:

    with pd.ExcelWriter(filename) as writer:
        df_merged_final.to_excel(writer, sheet_name='Final Data', index=False)
-3
Bartimaeus 31 Окт 2019 в 19:20
3
Могли бы вы просто не использовать Python для непосредственного выполнения работы макросов? Вы можете управлять Excel с помощью Python так же, как с VBA.
 – 
K.Dᴀᴠɪs
31 Окт 2019 в 19:24
1
Вероятно, это лучший способ сделать это (кроме фильтрации). Однако я не знаю Python - запрос был создан кем-то другим, и у меня больше нет к нему доступа.
 – 
Bartimaeus
31 Окт 2019 в 19:30
1
Как именно создается файл Excel? Можете ли вы использовать шаблон, в котором уже есть нужные вам макросы, сделать копию и заполнить ее своими данными?
 – 
Tim Williams
31 Окт 2019 в 19:49
Вы предлагаете скопировать мастер-файл, а затем перенести данные из вновь созданного файла в копию, избегая таким образом работы по вставке макросов? Это сэкономило бы часть времени / проблем.
 – 
Bartimaeus
31 Окт 2019 в 20:05

1 ответ

Вы можете собрать все свои макросы в файл .bas и импортировать их при необходимости.

1) соберите все свои обычные макросы и поместите их в модуль. Вы даже можете написать один родительский макрос, который вызывает все остальные дочерние макросы, но все они должны быть в этом модуле;

2) экспортировать модуль в виде файла .bas;

Тогда всякий раз, когда вам нужны макросы:

3) импортировать файл .bas в вашу рабочую книгу;

4) ваши макросы теперь доступны на ленте вкладки разработчика, которая представляет их в виде выпадающего списка. Если вы использовали родительский макрос, вы можете просто щелкнуть родительский макрос, чтобы запустить все дочерние макросы.

Это позволяет вам работать с самим исходным файлом, и вы можете избежать копирования больших объемов данных в буфер обмена. Также служит отличной резервной копией ваших наиболее часто используемых макросов на случай, если ваш мастер-файл Excel будет поврежден.

0
Thomas Jansen 2 Ноя 2019 в 11:10