Macro - Basic - Documenti
< Macros
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
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
Apertura con finestra di dialogo
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())
Salvataggio con finestra di dialogo
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