makro drukujące plik zewnętrzny

Użytkowanie arkusza kalkulacyjnego
pruszko
Posty: 38
Rejestracja: czw lip 29, 2010 9:26 am

makro drukujące plik zewnętrzny

Post autor: pruszko »

Witam :)
Napisałem makro w pliku calc otwierające plik writera:

Kod: Zaznacz cały

sub oswiadczenie
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 args(0) as new com.sun.star.beans.PropertyValue 
sciezka="tu wiadomo ścieżka do pliku"
Url=convertToUrl(sciezka)
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, args())

end sub
wolałbym aby nie otwierał się ten plik tylko po porostu drukował.
Czy ktoś mi mógłby pomóc?
;)
Ostatnio zmieniony śr paź 20, 2010 1:30 pm przez Jan_J, łącznie zmieniany 1 raz.
Powód: kod umieszczamy w znacznikach code
OpenOffice 3.2 na Windows XP/Vista
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: makro drukujące plik zewnętrzny

Post autor: Jan_J »

FAQ:
http://wiki.services.openoffice.org/wik ... _in_OOo%3F

Jeżeli już pisać makro, to
Ukrycie/wyświetlenie zawartości dokumentu:

Kod: Zaznacz cały

d = thisComponent
c = d.currentController
c.Frame.ComponentWindow.setVisible(false)
c.Frame.ComponentWindow.setVisible(true)
Drukowanie dokumentu: Andrew Pitonyak, http://www.pitonyak.org/AndrewMacro.odt, strona bodajże 35.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
pruszko
Posty: 38
Rejestracja: czw lip 29, 2010 9:26 am

Re: makro drukujące plik zewnętrzny

Post autor: pruszko »

Wybacz Janie ale nie kumam, jestem za cienki

jak to złączyć wszystko?
OpenOffice 3.2 na Windows XP/Vista
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: makro drukujące plik zewnętrzny

Post autor: Jan_J »

Pierwszy link pokazuje jak to zrobić bez makra, tylko np. skryptem systemowym.

Kombinacja drugiej i trzeciej wskazówki doprowadzi do czegoś takiego

Kod: Zaznacz cały

Sub PrintADocument()
  oDesk = createUnoService("com.sun.star.frame.Desktop")

  rem wybór nazwy pliku
  fileName = "file:///f:/test.odt"   rem quick and dirty
  rem sensowna wartość fileName może pochodzić np. z okna dialogowego umożliwiającego wybór pliku

  rem ładujemy dokument, ukrywamy jego okno
  Dim args0(1) as new com.sun.star.beans.PropertyValue
  oDoc = oDesk.LoadComponentFromURL(fileName, "RootFrame", 255, args0())
  oDoc.currentController.Frame.ComponentWindow.setVisible(false)

  rem drukujemy domyślną drukarką; więcej: przejrzyj opcje drukowania w AndrewMacro
  Dim mPrintopts1() as Variant
  oDoc.Print(mPrintopts1())

  rem zamykamy dokument bez zapisywania
  oDoc.close(false)
End Sub
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
pruszko
Posty: 38
Rejestracja: czw lip 29, 2010 9:26 am

Re: makro drukujące plik zewnętrzny

Post autor: pruszko »

Dziękuję Ci Janie za pomoc, rzeczywiście drukuje się :D
Lecz na koniec po wydrukowaniu zamyka sam plik lecz nie zamyka okna writera i wywala błąd - załączam zrzut ekranu.

I tak strasznie Ci dziękuję za pomoc. Nie zmęczy bym tego zagadnienia sam :)


Albo jeszcze prościej można by rozwiązać temat drokowania pliku zewnętrznego :D poprostu z wiersza poleceń - na omawianym przykładzie może to wyglądać tak:

"C:\Program Files\OpenOffice.org 3\program\soffice.exe" -p "C:\Documents and Settings\piotrp\Moje dokumenty\KOMORKI\oswiadczenie odpowiedzialnosci.odt"
tylko jak to zaszyć w makrze? :?
Załączniki
ekran.JPG
OpenOffice 3.2 na Windows XP/Vista
Jan_J
Posty: 4576
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: makro drukujące plik zewnętrzny

Post autor: Jan_J »

pruszko pisze:... po wydrukowaniu zamyka sam plik lecz nie zamyka okna writera i wywala błąd
Domysł 1. Czy przypadkiem kod makra nie siedzi w tym pliku? (gdyby tak było, to żądanie otwarcia pliku nie byłoby konieczne).
Domysł 2. Może w chwili kiedy próbujesz doc.close(), proces wydruku jeszcze się nie zakończył. Spróbuj dodać przed doc.close() wywołanie wait(200) -- lub inną niewielką wartość w milisekundach.
Albo jeszcze prościej ...tylko jak to zaszyć w makrze? :?
To nie jest temat na makro, raczej na skrypt systemowy.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
pruszko
Posty: 38
Rejestracja: czw lip 29, 2010 9:26 am

Re: makro drukujące plik zewnętrzny

Post autor: pruszko »

Domysł 2 to strzał w dziesiątkę :D

dałęm 300 bo mój laptop już wiekowy i nie wyrabiał :)

wielkie dzięki Jan ! :bravo:
OpenOffice 3.2 na Windows XP/Vista
ODPOWIEDZ