Запустите любое приложение LibreOffice или OpenOffice. Далее выбелите пункт меню Сервис->Макросы->Управление макросами->LibreOffice Basic... (или Сервис->Макросы->Управление макросами->OpenOffice Basic...):
В открывшемся окне встаньте на Мои макросы->Standart->Module1 (или создайте новый "Модуль", если первый уже занят) и нажмите кнопку "Редактировать"
В открывшемся окне...
...вставьте следующий код:
REM ***** BASIC ***** Sub Main End Sub ' Сохранить документ в формате OpenOffice. Sub SaveAsOOO( cFile ) cURL = ConvertToURL( cFile ) oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _ Array(MakePropertyValue( "Hidden", True ),)) ' Расширение нового файла выбирается на основании расширения ' исходного файла, переведённого в нижний регистр. Select Case LCase(Right(cFile,4)) Case ".ppt" ' PowerPoint file. cFileExt = ".odp" Case "pptx" ' PowerPoint file. cFileExt = "odp" Case ".doc" ' Word file. cFileExt = ".odt" Case "docx" ' Word file. cFileExt = "odt" Case ".xls" ' Excel file. cFileExt = ".ods" Case "xlsx" ' Excel file. cFileExt = "ods" Case Else cFileExt = ".odf" End Select cFile = Left( cFile, Len( cFile ) - 4 ) + cFileExt cURL = ConvertToURL( cFile ) oDoc.storeAsURL( cURL, Array() ) oDoc.close( True ) End Sub Sub ConvertWordToPDF(cFile) cURL = ConvertToURL(cFile) oDoc = StarDesktop.loadComponentFromURL(cURL, "_blank", 0, Array(MakePropertyValue("Hidden", True), )) cFile = Left(cFile, Len(cFile) - 4) + ".pdf" cURL = ConvertToURL(cFile) oDoc.storeToURL(cURL, Array(MakePropertyValue("FilterName", "writer_pdf_Export"), )) oDoc.close(True) End Sub Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue Dim oPropertyValue As New com.sun.star.beans.PropertyValue If Not IsMissing( cName ) Then oPropertyValue.Name = cName EndIf If Not IsMissing( uValue ) Then oPropertyValue.Value = uValue EndIf MakePropertyValue() = oPropertyValue End Function
Для запуска сделайте файл, например с именем soffice-msf2odf.bat, содержащий следующие строки:
set OooExe="C:\Program Files\LibreOffice 3\program\soffice" for %%i in (*.doc) do %OOOExe% -invisible macro:///Standard.Module1.SaveAsOOO("%%~fi") for %%i in (*.xls) do %OOOExe% -invisible macro:///Standard.Module1.SaveAsOOO("%%~fi") for %%i in (*.ppt) do %OOOExe% -invisible macro:///Standard.Module1.SaveAsOOO("%%~fi")
Красным цветом отмечен путь, который может меняться в зависимости от установленного свободного Офиса и пути его установки. Проверьте путь, по которому установлен Ваш свободный Офис.
Положите файл в папку с документами Microsoft Office и запустите его - рядом создадутся файлы свободного формата ODF.
Файлы:
macros.code в кодировке koi8-R
macros.code в кодировке UTF-8
macros.code в кодировке windows-1251
soffice-msf2odf.bat