Получил ответ от одного из разработчиков в Libreoffice, и он работает как шарм, поэтому поделитесь им здесь.Ссылку на ответ можно найти здесь
Решение Майка
Первое: записанный макрос не будет работать: он не применяетсяизменения, он просто открывает диалог.Всегда проверяйте записанные макросы: -)
Вместо этого вы можете использовать этот макрос:
Sub FitToPage
Dim document As Object, pageStyles As Object
document = ThisComponent
pageStyles = document.StyleFamilies.getByName("PageStyles")
For i = 0 To document.Sheets.Count - 1
Dim sheet As Object, style As Object
sheet = document.Sheets(i)
style = pageStyles.getByName(sheet.PageStyle)
style.ScaleToPagesX = 1
Next
On Error Resume Next
document.storeSelf(Array())
document.close(true)
End Sub
Он работает с текущим документом и после установки масштаба сохраняет (перезаписывает!) Изакрывает документ.
Чтобы использовать этот макрос из командной строки, вам необходимо сохранить его в некоторых библиотеках, например, Standard.В моем примере ниже я использую Module1 для его хранения.
Вы можете использовать этот макрос для одного документа, например так:
'path/to/LibreOffice/program/soffice' path/to/excelfile.ext macro:///Standard.Module1.FitToPage
Чтобы использовать его в нескольких документах, вам нужно сделатьэто в цикле (упоминание нескольких имен файлов в качестве аргументов для одного вызова soffice, как в случае с глобализацией оболочки в Linux с использованием *, не будет работать - на самом деле, он будет запускать макрос только для последнего документа, оставляя остальные открытыми и неизмененными).Цикл для Windows может быть таким:
for %f in (*.xls) do start /wait "" "C:\Program Files\LibreOffice\program\soffice.exe" "%f" macro:///Standard.Module1.FitToPage