Tabelle mehrfach ausdrucken

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Basitsch
Beiträge: 3
Registriert: Di, 17.06.2008 13:13

Tabelle mehrfach ausdrucken

Beitrag von Basitsch »

Hallo,

bin erst einen halben Tag mit Staroffice Basic beschäftigt und brauche enscheinend Hilfe von Menschen mit mehr Erfahrung.

In SO Calc habe ich eine Namensliste und in Formularblatt.
Das Formularblatt will ich für jeden vorhandenen Namen der Liste ausdrucken lassen.

Der folgende Versuch macht das nur für den ersten Eintrag. Die Testzeile funktioniert aber für jeden Eintrag.

Code: Alles auswählen

Rem Attribute VBA_ModuleType=VBADocumentModule
Option VBASupport 1
Sub Formulare_Drucken
' ThisComponent.Sheets.getbyName("Test").getCellRangebyName("B1").String = "Hallo" '  OK

Dim i          as integer
Dim j          as integer
dim Person     as string
dim Frame1     as object
dim dispatcher as object
dim weeksheet  as object
dim listsheet  as object
dim args1(1)   as new     com.sun.star.beans.PropertyValue

Frame1 = ThisComponent.CurrentController.Frame
WeekSheet = ThisComponent.Sheets.getByName("Wochenblatt")
ListSheet = ThisComponent.Sheets.getByName("Namensliste")
ThisComponent.CurrentController.setActiveSheet(WeekSheet)
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "Copies"
args1(0).Value = 1
args1(1).Name = "Collate"
args1(1).Value = false

j = 0
for i = 10 to 111 ' Zellen zählen von 0 an
   Person =  ThisComponent.Sheets.getbyName("Namensliste").getCellByPosition(0,i).String
   if Person <> "" then
      ThisComponent.Sheets.getbyName("Test").getCellByPosition(0,j).String =  Person '  OK
      ThisComponent.Sheets.getbyName("Wochenblatt").getCellByPosition(4,1).String =  Person ' Test OK
      dispatcher.executeDispatch(Frame1, ".uno:PrintDefault", "", 0, Args1()) ' Nur für 1. Person gedruckt
      j = j + 1  
   end if   
next i

ThisComponent.CurrentController.setActiveSheet(ListSheet)

End Sub
Anscheinend brauche ich einen anderen _Druckbefehl, der synchron funktioniert, oder eine Möglichkeit auf die Aufnahmebereitschaft des Druckbefehls zu warten.

Habe SO 8 auf xp professional sp2.

Wäre für jeden Hinweis dankbar und
grüsse,

Hannes
Basitsch
Beiträge: 3
Registriert: Di, 17.06.2008 13:13

Re: Tabelle mehrfach ausdrucken

Beitrag von Basitsch »

Hallo Rainer,

danke für den Hinweis. Dein Vorschlag funktioniert.

Ob es ein exaktes ereignisgesteuertes Verfahren gibt, würde mich aber immer noch interessieren. Darum lasse ich den Thread noch offen.

grüsse,
Hannes
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabelle mehrfach ausdrucken

Beitrag von Stephan »

Ob es ein exaktes ereignisgesteuertes Verfahren gibt, würde mich aber immer noch interessieren
ergänze einen Parameter:

Code: Alles auswählen

args1(2).Name = "Wait"
args1(2).Value = true

Gruß
Stephan
Basitsch
Beiträge: 3
Registriert: Di, 17.06.2008 13:13

Re: Tabelle mehrfach ausdrucken

Beitrag von Basitsch »

Hallo,

danke für die weiteren Beiträge.

Onprint scheint beim Anfordern eines Druckvorganges ausgelöst zu werden und ist daher ein etwas anderes Thema.

Das Argument Wait auf true zu setzen, hat nichts gebracht.

grüsse
Hannes
Antworten