Как я уже писал чуть выше, сам код на VBA не стирается, а вот с запуском этого макроса есть проблемы, приходится привязываться к специфическим событиям, либо биндить запуск макроса на сочетание клавиш.
Открываю файл таким образом:
| Код |
|---|
// Create new PHPExcel object
$template = $_SERVER['DOCUMENT_ROOT'] . '/price/PriceTemplate.xlsm';
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($template);
|
Дальше добавляю строки, а затем сохраняю вот так:
| Код |
|---|
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(__DIR__.'/Price.xlsm'); |
Так что файлы *.xlsm поддерживаются, по крайней мере частично. Потому что в получившемся файле код макроса виден в режиме разработчика.
Библиотеку LibXL в гугле находил, она вроде как платная. Ну и не всякий хостер согласится устанавливать сторонние библиотеки.