Hallo Dirk,
Das mit dem "Call Shell hab" ich so von einem anderen makro übernommen, keine Ahnung wofür oder warum es dort steht, aber ohne geht's nicht.
CALL & SHELL kannst Du z.B. in der Online-Hilfe (F1) nachlesen.
Aber das es ohne CALL nicht funktioniert, kann ich mir so nicht wirklich vorstellen da der Code-Schnipsel nicht ausreichend ist.
Könnte es sein, dass mein "zusammengebasteltes" makro an irgendeiner Stelle "instabil" ist,
Nun ja. Jeder fängt irgendwie mit irgendwas mal klein an. Und von daher bleiben bestimmte Fehler, zwecks fehlendem Wissen, einfach nicht aus.
-{davon kann ich aktuell auch ein Liedchen singen}-
Was mir aber grad eben aufgefallen ist, das hat auch was mit dem Thema "Druckbereich" zu tun, ist nämlich folgendes.
Code: Alles auswählen
REM Druckbereich für 1 Seite
dim args121(1) as new com.sun.star.beans.PropertyValue
args121(0).Name = "Nr"
args121(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args121())
Da steckt schon mal ein Fehler drin.
args121(1) ist mit 1 deklariert. Und das bedeutet: das
genau 2 Argumente, 0 und 1, erwartet (verlangt) werden. Jedoch wendest Du aber nur 1 Argument (0) an, was schon mal nicht gut ist. Richtig wäre nämlich nicht nur an dieser Stelle;
args121(0).
Bedenke und Beachte unbedingt folgendes!
Bei der deklaration von Variablen, in diesem Falle, fängt die Zählung mit 0 an.
Das heißt: 0 ist der 1. Parameter, 1 ist der 2. Parameter, usw...
Dieser Fehler tritt nicht nur einmal auf, sondern er zieht sich wie ein Roter Faden duch das gesamte Makro. Du deklarierst die Variablen (Argumente) zu groß!
Hier noch ein Beispiel.
Code: Alles auswählen
REM Ausdruck Seite 1
dim args100(6) as new com.sun.star.beans.PropertyValue
args100(0).Name = "Copies"
args100(0).Value = 1
args100(1).Name = "Collate"
args100(1).Value = true
args100(2).Name = "Selection"
args100(2).Value = true
args100(3).Name = "Pages"
args100(3).Value = 1
args100(4).Name = "Sort"
args100(4).Value = true
args100(5).Name = "Wait"
args100(5).Value = true
dispatcher.executeDispatch(document, ".uno:Print", "", 0, args100())
args100 ist auch hier viel zu groß deklariert! Richtig wäre:
args100(5)
Jetzt noch mal zu deinem Druckbereich im Makro.
Code: Alles auswählen
REM Druckbereich für 1 Seite
dim args121(1) as new com.sun.star.beans.PropertyValue
args121(0).Name = "Nr"
args121(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args121())
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "ToPoint"
args10(0).Value = "$A$1:$AF$61"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args10())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, Array())
Das kannst Du etwas kürzer und übersichtlicher haben.
Code: Alles auswählen
REM Druckbereich für 1 Seite
oDruckSheet = Calc.Sheets(0) ' Blattnummer 1
oZellRange = oDruckSheet.getCellRangeByName("A1:AF61") ' Druckbereich = A1:AF61
oCursor = oDruckSheet.createCursorByRange(oZellRange)
oAdress = oCursor.RangeAddress
Dim aDruckbereich(0)
aDruckbereich(0) = oAdress
oDruckSheet.setPrintAreas(aDruckbereich()
an irgendeiner Stelle "instabil" ist
Ich würd jetzt hiermit mit JA antworten,
da die falsche Variablendeklaration sehr viel ausmachen kann. Deshalb empfehle ich dir hiermit eine Überarbeitung der deklarationen, um zumindest schon mal eine Fehlerquelle zu elemenieren. Und als nächstes würde ich mich an deiner Stelle von dem Dispatcher-Code (aufgezeichneter-code) verabschieden, und das ganze richtig programmieren.
Wie gesagt ich bin Anfänger und das ist nur eine Vermutung.
Und ich bin auch noch keine wirklich große Leuchte wenns ums programmieren geht

. Ich hoffe aber dennoch das ich etwas weiter helfen konnte

.
Ich empfehle dir außerdem wärmstens die Info-Quellen die unser Moderator Stephan hier:
Informationen zur StarBasic-Programmierung zusammengetragen hat.
Viel Erfolg!
Gruß
balu