Здравствуйте.
Ищу способ средствами VBA вносить изменения в xml структуру файла Excel.
Эта xml структура несет пользовательские настройки для ленты Excel. Сам файл Excel регулярно переименовывается (создаются нумерованные версии) и чтобы макросы, привязанные к кнопкам, продолжали работать, для тега OnAction в xml нужно менять имя файла.
Смена имени файла происходит несколько раз в день, поэтому хочется делать это программно, а не вручную инструментами типа Ribbon XML Editor или Custom UI Editor.
Я заметила, что если файл Excel превратить в zip, то его xml часть представлена в файле по пути «ПОЛНОЕ ИМЯ ФАЙЛА.zip\customUI\customUI14.xml». Исходя из этого, у меня сложился некий алгоритм редактирования этого xml :
1. Заархивировать файл Excel в zip
Name File_Name As File_Name & ".zip"
2. открыть в zip-е «подфайл» «ПОЛНОЕ ИМЯ ФАЙЛА.zip\customUI\customUI14.xml» с возможностью редактирования,
3. считать его содержимое (возможно через CreateObject("ADODB.Stream").LoadFromFile),
4. внести изменения
5. вернуть измененный customUI14.xml в архив.
6. Преобразовать файл обратно в Excel
Name File_Name & ".zip" As File_Name
и изменения вступают в силу.
Шаги 2-4 пытаюсь делать как с обычным - НЕархивным - подфайлом, и пока не получается даже открыть его - ошибка 3002 , «невозможно открыть файл» :
With CreateObject("ADODB.Stream") ' загружаем данные из файла
.Type = 2: .Charset = "utf-8": .Open
.LoadFromFile Folder$ & Filename$
txt = .ReadText: .Close
End With
Вопрос для меня, возможно ли такое в принципе. В гугле нахожу только как архивировать/разархивировать макросом, как получить список путей до файлов в архиве, что не отвечает на мой вопрос.
В приложении простой файл Excel для проб, иксемелем создающий в ленте пользовательскую вкладку с кнопкой.
Буду благодарна за подсказки.