Есть большое подозрение, что Axapta тут не причем. С Office 2007 работает замечательно, как и с любым COM-объектом.
Тут скорее вопрос в формате файла .xltx, а точнее его отличия от .xlsx. Попробуйте просто переименовать .xltx в .xlsx вручную, без Axapta. В итоге при открытии увидите ту же ошибку.
Вызов BinData не преобразовывает файл из одного формата в другой, а делает точную копию (бинарную) и обзывает другим именем, т.е. то же что и при ручном переименовании.
А если использовать связку Axapta-Office, например так:
X++:
COM m_comApplication;
COM comWorkBooks;
COMVariant varTemlateName;
COM m_comDocument;
;
// bufferTransfer.loadFile(_fromFile);
// bufferTransfer.saveFile(_toFile);
m_comApplication = new COM("Excel.Application");
comWorkBooks = m_comApplication.workBooks();
varTemlateName = new COMVariant(COMVariantInOut::IN, COMVariantType::VT_BSTR);
varTemlateName.bStr(_fromFile);
m_comDocument = comWorkBooks.add(varTemlateName);
varTemlateName.finalize();
comWorkBooks.finalize();
m_comDocument.saveAs(_toFile);
m_comDocument.Close();
m_comDocument.finalize();
m_comApplication.finalize();
То все получится. Совет - смотрите в сторону классов ComExcelDocument_RU, ComOfficeDocument_RU