Macros/Basic/Documents

From The Document Foundation Wiki
Jump to: navigation, search
Other languages:
English • ‎español • ‎italiano

Return to Index


Active document

1 Sub Main()
2     doc = ThisComponent
3     MsgBox doc.Title
4 End Sub

All open documents

For Each doc In StarDesktop.Components
    MsgBox doc.Title
Next

New documents

  • Calc
Dim path As String
Dim args()

path = "private:factory/scalc"
doc = StarDesktop.loadComponentFromURL(path, "_default", 0, args())
  • For Writer:
"private:factory/swriter"
  • For Impress:
"private:factory/simpress"
  • For Draw:
"private:factory/sdraw"
  • For Math:
"private:factory/smath"
  • For Base
Dim path As String, dbc As Object, db As Object
Dim args()

path = ConvertToURL("/home/USER/My_db.odb")
dbc = createUnoService("com.sun.star.sdb.DatabaseContext")
db = dbc.createInstance()
db.URL = "sdbc:embedded:firebird"
db.DatabaseDocument.storeAsURL(path, args())

Open documents

Dim path As String
Dim doc As Object
Dim args()

    path = ConvertToUrl("/home/USER/My_file_Calc.ods")
    doc = StarDesktop.loadComponentFromURL(path, "default", 0, args())

Using argument for open

  • For open like template
Dim path As String
Dim doc As Object
Dim args(0) As New "com.sun.star.beans.PropertyValue"

    args(0).Name = "AsTemplate"
    args(0).Value = True

    path = ConvertToUrl("/home/USER/My_file_Calc.ods")
    doc = StarDesktop.loadComponentFromURL(path, "default", 0, args())
  • Or, open normal if file it’s template
    args(0).Name = "AsTemplate"
    args(0).Value = False

    path = ConvertToUrl("/home/USER/My_template_Calc.odt")
    doc = StarDesktop.loadComponentFromURL(path, "default", 0, args())
  • Other common arguments, open read only.
    args(0).Name = "ReadOnly"
    args(0).Value = True
  • With password
    args(0).Name = "Password"
    args(0).Value = "letmein"
  • With active macros
    args(0).Name = "MacroExecutionMode"
    args(0).Value = 4
  • Automatic start presentation
    args(0).Name = "StartPresentation"
    args(0).Value = True
  • Like view preview
    args(0).Name = "Preview"
    args(0).Value = True
  • Open hidden
    args(0).Name = "Hidden"
    args(0).Value = True

Open with dialog box

Dim dlg_select_file as Object
Dim files() As String
Dim args()
Dim path As String
Dim doc As Object

    dlg_select_file = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
    dlg_select_file.setTitle("Select one file")

    If dlg_select_file.Execute() Then
        path = dlg_select_file.getFiles()(0)
        doc = StarDesktop.loadComponentFromURL(path, "_default", 0, args())
    End If

Save document

  • For open documents
    path = ConvertToUrl("/home/USER/My_file_Calc.ods")
    doc = StarDesktop.loadComponentFromURL(path, "default", 0, args())

    MsgBox doc.Title

    doc.store()
    doc.close(True)
  • For new documents
Dim args()

    path = "private:factory/scalc"
    doc = StarDesktop.loadComponentFromURL(path, "_default", 0, args())

    path = ConvertToUrl("/home/mau/new_doc_calc.ods")
    doc.storeAsURL(path, args())
  • Using other options, save with password
Dim args(0) As New "com.sun.star.beans.PropertyValue"

    path = "private:factory/scalc"
    doc = StarDesktop.loadComponentFromURL(path, "_default", 0, args())

    args(0).Name = "Password"
    args(0).Value = "letmein"

    path = ConvertToUrl("/home/mau/new_doc_calc.ods")
    doc.storeAsURL(path, args())
  • Using filter for change format
Dim args(0) As New "com.sun.star.beans.PropertyValue"

    path = "private:factory/swriter"
    doc = StarDesktop.loadComponentFromURL(path, "_default", 0, args())

    args(0).Name = "FilterName"
    args(0).Value = "MS Word 97"

    path = ConvertToUrl("/home/mau/new_doc_Word.doc")
    doc.storeAsURL(path, args())

Save with dialog box

Dim dlg_save as Object
Dim mArchivo() As String
Dim mOpciones()

    dlg_save = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
    'com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION_PASSWORD = 2
    With dlg_save
        .Initialize(Array(2))
        .AppendFilter("Text documents ODF (.odt)", "*.odt" )
        .AppendFilter("Spreadsheet ODF (.ods)", "*.ods" )
    End With

    If dlg_save.Execute() Then
        path = dlg_save.getFiles()(0)
        MsgBox ConvertFromUrl(path)
    End If

Export to PDF

  • For Calc document
Dim args(0) As New "com.sun.star.beans.PropertyValue"
Dim path As String
Dim doc As Object

    doc = ThisComponent
    args(0).Name = "FilterName"
    args(0).Value = "calc_pdf_Export"

    path = ConvertToURL("/home/USER/output.pdf")
    doc.storeToURL(path, args())
  • For Writer document
    args(0).Name = "FilterName"
    args(0).Value = "writer_pdf_Export"