Jump to content

Macro - Basic - Documenti

From The Document Foundation Wiki
This page is a translated version of the page Macros/Basic/Documents and the translation is 100% complete.

⇐ Ritorna all'indice

Documento attivo

Sub Main()
    doc = ThisComponent
    MsgBox doc.Title
End Sub

Tutti i documenti aperti

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

Nuovi documenti

  • Calc

Dim path As String
Dim args()

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

  • Per Writer:

"private:factory/swriter"

  • Per Impress:

"private:factory/simpress"

  • Per Draw:

"private:factory/sdraw"

  • Per Math:

"private:factory/smath"

  • Per 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())

Documenti aperti

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())

Uso degli argomenti per l'apertura

  • Per aprire come modello

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())

  • O, per aprire in modo normale se il file è un modello

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

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

  • Altri argomenti di uso comune, apertura in sola lettura.

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

  • Con password

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

  • Con macro attive

args(0).Name = "MacroExecutionMode"
args(0).Value = 4

  • Avvio automatico della presentazione

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

  • Come anteprima

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

  • Apertura nascosta

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

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

Salvataggio del documento

  • Per i documenti aperti

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

MsgBox doc.Title

doc.store()
doc.close(True)

  • Per i nuovi documenti

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())

  • Uso di altre opzioni, salvataggio con 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())

  • Uso dei filtri per modificare il formato

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())

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

Esportazione in PDF

  • Per i documenti di Calc

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())

  • Per i documenti di Writer

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 Attende 1,5 secondi
    Wait 1500
Loop

Status bar

doc = ThisComponent
status_bar = doc.CurrentController.StatusIndicator

REM Imposta il testo iniziale ed il valore limite
status_bar.start("In line ", 10)
For i = 1 To 10
    status_bar.setValue(i)
    status_bar.setText("Line: " & i)
    Wait 1000
Next
	
REM Importante per liberare la barra di stato
status_bar.end()

Zoom

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

⇐ Ritorna all'indice