calc - stampa due fogli su due stampanti diverse

Creare una macro - Scrivere uno script - Usare le API
Rispondi
rocketA
Messaggi: 2
Iscritto il: sabato 30 aprile 2011, 0:45

calc - stampa due fogli su due stampanti diverse

Messaggio da rocketA »

salve, sono alle prime armi...
ho un file calc con tre fogli, nel primo importo i dati da un txt, negli altri due li elaboro per la stampa.
dovrei stampare i fogli due e tre alla pressione di un pulsante. il foglio due su una stampante barcode/rfid, il tre su una laser.
quello che vorrei ottenere è la stampa dei due fogli con un singolo click, senza che compaia alcuna finestra di scelta della stampante. visto che è per lavorare in un ufficio con cambi frequenti di hw, il massimo sarebbe che i nomi delle stampanti vengano importati da file esterno.

per il momento ho creato il pulsante al quale ho assegnato una macro di stampa per i due fogli. qui sotto il codice.

Codice: Seleziona tutto

sub Stampa
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
dim args2(2) as new com.sun.star.beans.PropertyValue

		args1(0).Name = "Nr"

   		args2(0).Name = "Copies"
   		args2(0).Value = 1
   		args2(1).Name = "Selection"
   		args2(1).Value = true
   		args2(2).Name = "Collate"
   		args2(2).Value = false
   		

for i=1 to 3

	args1(0).Value = i

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

	rem ----------------------------------------------------------------------
		dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   		dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
   
next i


end sub
quando dovevo fare cose analoghe, in excel usavo un'evoluzione di questo sistema

Codice: Seleziona tutto

 Sub Stampa()
Application.ActivePrinter = "Generic / Text Only su Ne05:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "Generic / Text Only su Ne05:", Collate:=True
Application.ActivePrinter = "Kyocera KM-2560 su Ne03:"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
        "Kyocera KM-2560 su Ne03:", Collate:=True
        Application.WindowState = xlMinimized
        Workbooks("Dorso.xls").Close
End Sub

grazie!
OpenOffice 3.1.1 su Windows Vista 64bit
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: calc - stampa due fogli su due stampanti diverse

Messaggio da unlucky83 »

Forse può darti qualche idea questa pagina
https://wiki.openoffice.org/wiki/Docume ... b_Settings

Devi impostare i parametri della stampante con ThisComponent.setPrinter(...)
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
patel
Volontario attivo
Volontario attivo
Messaggi: 4020
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: calc - stampa due fogli su due stampanti diverse

Messaggio da patel »

prova questa

Codice: Seleziona tutto

Sub PrintWithOptions()
Dim oOpt(2) as new com.sun.star.beans.PropertyValue
oOpt(0).Name = "Name" : oOpt(0).Value = "NomeStampante"
oOpt(1).Name = "PaperOrientation" : oOpt(1).Value = com.sun.star.view.PaperOrientation.PORTRAIT
oOpt(2).Name = "Pages" : oOpt(2).Value = "1-2" ' pagine da stampare
ThisComponent.Printer = oOpt()
ThisComponent.print oOpt()
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