ich habe ein Makro zusammen gebastelt. Das funktioniert auch sehr gut. Bis auf das, dass beim vorletzten Schritt eine Meldung kommt. Der Schritt ist das Drucken. Gedruckt wird der vorher erstellte Druckbereich. Allerdings kommt hallt immer diese Meldung (siehe Anhang).
Dim iAntwort As Integer 'Auftrag ausführen?
iAntwort = MsgBox("Briefumschläge bedrucken?", 52, "Drucken")
If iAntwort = 7 Then
End
else iAntwort = 6
end if
call AdressIndex 'kopieren Adressen Index
Dim oCell as Object, s as String 'Anzahl Briefumschläge
oCell = ThisComponent.sheets(1).getCellRangeByName("C39")
s = ocell.Value
call A38 'Sprung A38
Dim i%, a$ 'Beginn Schleife
For i = 1 to s step 1
'Dieser Teil wird s mal durchlaufen
call Naechste 'nächste beschriebene Zelle
call AktuelleZelle 'kopiert Inhalt Aktuelle Zelle
Dim oDoc as Object, osheet as Object 'Druckbereich festlegen (Seite 356 Makros in OO)
Dim oDrBereich as Object, oDrB as object
Dim aDruckbereiche(0)
oDoc = thisComponent
oSheet = oDoc.sheets(1)
oDrBereich = osheet.getCellRangeByName("A1:H19").rangeAddress
aDruckbereiche(0) = oDrBereich
oSheet.setPrintAreas(aDruckbereiche())
aDruck = oSheet.getPrintAreas()
Dim arg(0) as new com.sun.star.beans.PropertyValue 'Drucken (Seite 223 Makros in OO)
arg(0).name = "Pages"
arg(0).value = "1"
thisComponent.print(arg())
Next i
MsgBox "Bedruckte Briefumschläge: " + s ,0,"ENDE"
PS. wenn ich den Druck-Teil seperat als eigenes Makro ausführe bekomme ich diese Meldung nicht.
in Calc definierst du die Druckbereiche über den Weg, den du ja auch gehst. Beim Printbefehl selbst gibst du keine Seiten an - hier wird einfach ein leeres Array Übergeben. Gedruckt werden alle definierten Druckbereiche aller Seiten! Also, da musst du selbst für Sorge tragen - bei der Definition er Druckbereiche. So war es bisher.
Ab der 2.3 könnte es Änderungen gegeben haben - das weiss ich noch nicht, das müsste ich mal ausprobieren. In der UI ist es nämlich jetzt auch so, dass man "Seiten" auswählen kann - zum Drucken.
das mit den Seiten angeben funktioniert in einer andren Datei wunderbar.
Das Makro hat folgenden Hintergrund. Ich habe ein Tabellenblatt in welchem ich Adressen gespeichert habe. Nun kann ich bestimmte Adressen auswählen in dem ich ein "X" in die letzte Spalte schreibe. Jede adresse hat einen Index. Nun kommt das Makro zum einsatz.
Diese Index(mehrzahl????) werden kopiert in Tab2:A39.
zuerst wird der Courser in Zelle A38 positioniert dann die 1. "befüllte" Zelle ausgelesen und der Wert kopiert in Zelle D39
dann der Druckbereich definiert und die Seite gedruckt. Dann wird die Schleife wieder durchlaufen, bis halt der Endwert der Schleife erreicht ist.
Das ganze dient dazu um Briefumschläge zu drucken.
Mir ist folgendes aufgefallen:
Wenn nur eine Adresse ausgewählt ist läuft das Makro von Oben super.
Sind mehr wie eine Adresse ausgewählt kommt es zur besagten Meldung.