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
Habe SO 8 auf xp professional sp2.
Wäre für jeden Hinweis dankbar und
grüsse,
Hannes