Strona 1 z 1
Makro drukuj w calc
: wt cze 03, 2014 8:35 pm
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
Re: Makro drukuj w calc
: wt cze 03, 2014 11:34 pm
autor: belstar
Odpowiedzi znajdziesz w publikacji
AndrewMacro.odt
Re: Makro drukuj w calc
: śr cze 04, 2014 8:21 am
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
Re: Makro drukuj w calc
: śr cze 04, 2014 9:14 pm
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
Re: Makro drukuj w calc
: czw cze 05, 2014 11:33 am
autor: tredsch
.. dzięki... dzięki... pozdrawiam i wszystkiego dobrego. Edward