Macros/Basic/Documenti

From The Document Foundation Wiki
Jump to navigation Jump to search
This page is a translated version of the page Macros/Basic/Documents and the translation is 3% complete.
Other languages:
English • ‎español • ‎italiano

Return to Index


Active document

Sub Main()
    doc = ThisComponent
    MsgBox doc.Title
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

Only show the selected path for user, you need add code for save in line 15.

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"

  • For Draw document

args(0).Name = "FilterName"
args(0).Value = "draw_pdf_Export"

  • For Impress document

args(0).Name = "FilterName"
args(0).Value = "impress_pdf_Export"

Set focus

documents = StarDesktop.getComponents()
enumeration = documents.createEnumeration()
Do While enumeration.hasMoreElements()
    doc = enumeration.nextElement()
    window = doc.CurrentController.Frame.ComponentWindow
    window.setFocus()
    REM Sleep 1.5 seconds
    Wait 1500
Loop

Status bar

doc = ThisComponent
status_bar = doc.CurrentController.StatusIndicator

REM Set initial text and limit value
status_bar.start("In line ", 10)
For i = 1 To 10
    status_bar.setValue(i)
    status_bar.setText("Line: " & i)
    Wait 1000
Next
	
REM Important for free status bar	
status_bar.end()

Zoom

doc = ThisComponent
cc = doc.CurrentController
cc.ZoomValue = 150