У меня есть книга Excel с макросами и конфигурацией для каждого отдела. Мне нужно программно переименовать некоторые вкладки в зависимости от отдела. Я не могу просто переименовать вкладки, потому что многие макросы VBA ссылаются на tab по имени. Таким образом, мне нужно редактировать и код VBA. Есть ли возможность автоматически переименовать вкладку и использовать новое имя в коде VBA? Если это как-то достижимо с помощью VBA, возможно, есть способ сделать это с python и openpyxl, потому что я уже использую его для заполнения нескольких таблиц с указанными c значениями для отдела?
Я исследовал, что можно распаковать файл xlsm в следующую структуру каталогов:
_rels
docProps
xl
[Content_Types].xml
, затем отредактировать и снова сжать его в xlsm.
Можно ли просто найти все вхождения подстрок (имена этих вкладок ) и заменить их? Это может работать, если нет имен вкладок, которые выглядят как имя функции или около того, но в противном случае произойдет сбой. Итак, как правильно переименовать вкладки?
Обновление 1:
Похоже, что весь код VBA находится в vbaProject.bin, который я не могу редактировать с помощью python, могу ли я?
Обновление 2:
Мое текущее решение: заполнить некоторую скрытую вкладку отображением - old_tab_names: new_tab_names, используя Python. А на workbook_open выполните переименование с помощью VBA.