2015-12-18 3 views
2

Мне нужно запустить макрос javascript из командной строки. Мой .js сценарий находится вЗапустить общий доступ к файлам/скриптам/javascript

open_office_location/доли/Scripts/JavaScript/MultiplyCSV/multiplycsv.js

Я нашел это:

soffice.exe -headless «D: \ test1.ODS "" macro: //test1/Standard.Module1.Main "

Как определить имя модуля для моего сценария? Я пробовал:

"макро: // полный путь к .js файл"

"макро: //MultiplyCSV.multiplycsv.js"

«макро: // MultiplyCSV/multiplycsv. js "

и многие другие .. Я не могу найти решение.

Извините за мой плохой английский. Вы можете мне помочь?

ответ

1

Самый простой способ - назначить его событию «Открытый документ». Это будет запускать макрос всякий раз, когда документ открывается. Для этого перейдите на страницу Tools -> Customized -> Events. Дополнительная информация: https://wiki.openoffice.org/wiki/Documentation/OOoAuthors_User_Manual/Getting_Started/How_to_run_a_macro

Если вам нужна большая гибкость, вы можете настроить функцию Basic, чтобы вызвать код Javascript. Затем используйте синтаксис macro://. Для этого, сначала добавьте эту основную функцию в Module1, адаптированный из authoritative Andrew Pitonyak document:

Sub CallMultiplyCSV 
    Dim oDisp 
    Dim sMacroURL As String 
    Dim sMacroName As String 
    Dim sMacroLocation As String 
    Dim oFrame 
    oDisp = createUnoService("com.sun.star.frame.DispatchHelper") 
    REM To figure out the URL, add a button and then set the button 
    REM to call a macro. 
    sMacroName = "vnd.sun.star.script:MultiplyCSV.multiplycsv.js" 
    sMacroLocation = "?language=JavaScript&location=share" 
    sMacroURL = sMacroName & sMacroLocation 
    REM I want to call a macro contained in ThisComponent, so I 
    REM must use the frame from the document containing the macro 
    REM as the dispatch recipient. 
    oFrame = ThisComponent.CurrentController.Frame 
    oDisp.executeDispatch(oFrame, sMacroURL, "", 0, Array()) 
    'oDisp.executeDispatch(StarDesktop, sMacroURL, "", 0, Array()) 
End Sub 

Затем называют эту основную функцию:

soffice.exe -headless "D:\test1.ODS" "macro://test1/Standard.Module1.CallMultiplyCSV" 

Подробная информация о sMacroName и sMacroLocation см: https://wiki.openoffice.org/wiki/Documentation/DevGuide/Scripting/Scripting_Framework_URI_Specification

Смежные вопросы