Area di stampa con macro

Creare una macro - Scrivere uno script - Usare le API
Rispondi
Sep69
Messaggi: 15
Iscritto il: venerdì 5 luglio 2019, 10:11

Area di stampa con macro

Messaggio da Sep69 »

Buongiorno,
ho un problema di questo tipo, ho impostato una macro per la stampa e prima di procedere con la stampa stessa uso questa sub ottenuta registrando la macro:

Codice: Seleziona tutto

sub AreaStampa
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = true

dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())


end sub

Non capisco perchè quando lancio la macro con il comando

Codice: Seleziona tutto

dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array()) 'Stampa
di default il programma mi si posiziona su stampa "fogli selezionati" mi presenta anteprima vuota e per lanciare ciò che voglio debbo andare su "celle selezionate" e vorrei capire il motivo.

Per bypassare il problema vorrei attivare in automatico la spunta "celle selezionate", sapete mica come passargli il parametro nel distatcher print??
ne approfitto per chiedervi, ma vi è una lista con i comandi da usare e i relativi parametri?


Grazie, Sep
OpenOffice 4.1.6 Windows 2010 Pro
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Area di stampa con macro

Messaggio da patel »

Il registratore produce codice incomprensibile e spesso non funzionante, quindi spiega bene cosa vuoi ottenere
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Sep69
Messaggi: 15
Iscritto il: venerdì 5 luglio 2019, 10:11

Re: Area di stampa con macro

Messaggio da Sep69 »

Allego il file, voglio che prima del processo di stampa si definisca l'area di stampa f2 alla colonna m sino a dove ci sono valori, (registrato con un ctrl freccia giù) e che mi si apra il processo di stampa senza dover fare modifiche di impostazioni se non la stampante.
Oggi se faccio così l'area viene delimitata ma per stampare correttamente debbo selezionare su "celle selezionate" perchè su "fogli selezionati" non mi trovo l'area che mi aspetto.
Allegati
Filtra reparti.ods
(230.79 KiB) Scaricato 138 volte
OpenOffice 4.1.6 Windows 2010 Pro
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Area di stampa con macro

Messaggio da patel »

Il tuo file è troppo complesso per usarlo senza spiegazioni, ti allego una semplice macro che stampa un range

Codice: Seleziona tutto

Sub PrintSheetArea

Dim oRanges(0) As New com.sun.star.table.CellRangeAddress
oRanges(0).Sheet = 0
oRanges(0).StartColumn = 0 : oRanges(0).StartRow = 0
oRanges(0).EndColumn = 3 : oRanges(0).EndRow = 12 

ThisComponent.CurrentController.getActiveSheet().setPrintAreas(oRanges())
ThisComponent.Print(Array())
End Sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Rispondi