Makro drukuj w calc

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
tredsch
Posty: 12
Rejestracja: czw kwie 10, 2014 10:39 am

Makro drukuj w calc

Post autor: tredsch »

witam dzięki pomocy niemal mam już rozwiązane makro eksportu do pdf arkusza, w dokumencie (fakturze) może być jeszcze jedno makro bezpośredniego wydruku; poniższe znalazłem w internecie działa mi lecz drukuje cały dokument a mi chodzi aby drukować tylko pierwszą stronę; ponadto jak do pc-ta będę miał podłączone 2 drukarki żeby nie drukować na domyślna (igłową) tylko druga laserową HP.. proszę o pomoc i pozdrawiam:

sub prt
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(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Copies"
args1(0).Value = 1
args1(1).Name = "Collate"
args1(1).Value = true

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


end sub
windows xp, libreoffice 4.2
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Makro drukuj w calc

Post autor: belstar »

Odpowiedzi znajdziesz w publikacji AndrewMacro.odt
LibreOffice 5.1.2.2 Ubuntu 16 LTS
tredsch
Posty: 12
Rejestracja: czw kwie 10, 2014 10:39 am

Re: Makro drukuj w calc

Post autor: tredsch »

.. dzięki.. rozumiem że trzeba włożyć wysiłek własny w rozwiązanie problemu i to robię od kilku dni, poszukuję koresponduję, zmieniam w makrach zapisy niejednokrotnie sam na "czuja"; z 2 problemów jeden praktycznie rozwiązany i w części pozostał ten drugi, ale żebym miał czytać książkę 541 stron po angielsku, a nie znam języka, tak że dzięki nie dam rady... pozdrawiam
windows xp, libreoffice 4.2
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Makro drukuj w calc

Post autor: belstar »

tredsch pisze:działa mi lecz drukuje cały dokument a mi chodzi aby drukować tylko pierwszą stronę
Możesz ustawić zakres wydruku i po sprawie, czy to ręcznie czy poniższym makrem

Kod: Zaznacz cały

Sub PrintArea'Zakres wydruku
	Dim oPrintArea(0) as new com.sun.star.table.CellRangeAddress
	oSheet = ThisComponent.Sheets(0)
	'set Print Area
   	oPrintArea(0).StartColumn = 0'Kolumna A
   	oPrintArea(0).StartRow = 0 ' Wiersz 1
   	oPrintArea(0).EndColumn = 2 'Końcowa kolumna C
   	oPrintArea(0).EndRow = 9 ' końcowy wiersz 10

   	oSheet.setPrintAreas(oPrintArea())
End Sub
lub wydrukować tylko określone strony bez ustawiania zakresu wydruku:

Kod: Zaznacz cały

Sub PrintSomePrinterProperties
  Dim mPrintopts1(), x as Variant

  'Dimensioned at 0, if you set any other properties, 
  'be certain to set this to a higher value....
  Dim mPrintopts2(0) As New com.sun.star.beans.PropertyValue
  Dim oDoc As Object, oPrinter As Object
  Dim sMsg As String
  Dim n As Integer

  oDoc = ThisComponent

  '***********************************
  'Do you want to choose a certain printer
  'Dim mPrinter(0) As New com.sun.star.beans.PropertyValue
  'mPrinter(0).Name="Name"
  'mPrinter(0).value="Other printer"
  'oDoc.Printer = mPrinter()

  '***********************************
  'To simply print the document do the following:
  'oDoc.Print(mPrintopts1())

  '***********************************
  'To print pages 1-3, 7, and 9
  mPrintopts2(0).Name = "Pages"
  mPrintopts2(0).Valu e= "1"
  'oDoc.Printer.PaperFormat = com.sun.star.view.PaperFormat.LETTER
  'DisplayMethods(oDoc, "propr")
  'DisplayMethods(oDoc, "")
  oPrinter = oDoc.getPrinter()
  MsgBox "Printers " & LBound(oPrinter) & " to " & UBound(oPrinter)
  sMsg = ""
  For n = LBound(oPrinter) To UBound(oPrinter)
    sMsg = sMsg + oPrinter(n).Name + Chr(13)
  Next n
  MsgBox sMsg,0,"Print Settings"

  'DisplayMethods(oPrinter, "propr")
  'DisplayMethods(oPrinter, "")

  'mPrintopts2(0).Name="PaperFormat"
  'mPrintopts2(0).Value=com.sun.star.view.PaperFormat.LETTER
  oDoc.Print(mPrintopts2())
End Sub
tredsch pisze:ponadto jak do pc-ta będę miał podłączone 2 drukarki żeby nie drukować na domyślna (igłową) tylko druga laserową HP
Zmiana drukarki

Kod: Zaznacz cały

Sub CalcSheetStting()
	Dim oDoc as Object
	Dim oSpdSht as Object
	Dim oPrtName as String
	DIM mPrinterOpts(2) AS NEW com.sun.star.beans.PropertyValue
	
	oDoc = ThisComponent
  	oSpdSht = oDoc.createInstance("com.sun.star.comp.SpreadsheetSettings")
  	oPrtName = oSpdSht.PrinterName
  	oDisp = " >Nazwa drukarki domyślanej to< " & Chr$(10) & Chr$(10)& oPrtName
	
	msgbox oDisp, 0, "Drukarka"
  		
	REM Set the chosen printer zmień drukarkę

	mPrinterOpts(0).Name = "Name"
	'mPrinterOpts(0).Value = "MFC8880DN" 'nazwa twojej drukarki
	mPrinterOpts(0).Value = oDisp
	mPrinterOpts(1).Name = "PaperFormat"
	mPrinterOpts(1).Value = com.sun.star.view.PaperFormat.A4
	mPrinterOpts(2).Name = "PaperOrientation"
	mPrinterOpts(2).Value = com.sun.star.view.PaperOrientation.PORTRAIT
	oDoc.Printer = mPrinterOpts()'zmiana drukarki
	oDoc.Print(mPrinterOpts())'druk
End Sub
tredsch pisze:rozumiem że trzeba włożyć wysiłek własny w rozwiązanie problemu
A ile później jest frajdy?
tredsch pisze:ale żebym miał czytać książkę 541 stron po angielsku, a nie znam języka
Nikt ci nie kazał czytać całej, jest tam spis treści, a język angielski naprawdę się przydaje.
Pozdrawiam
LibreOffice 5.1.2.2 Ubuntu 16 LTS
tredsch
Posty: 12
Rejestracja: czw kwie 10, 2014 10:39 am

Re: Makro drukuj w calc

Post autor: tredsch »

.. dzięki... dzięki... pozdrawiam i wszystkiego dobrego. Edward
windows xp, libreoffice 4.2
ODPOWIEDZ