OO- calc Makro schreib Funktion nicht mit.

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

vanglio
Beiträge: 8
Registriert: Mo, 02.08.2004 11:40
Wohnort: Berlin

OO- calc Makro schreib Funktion nicht mit.

Beitrag von vanglio »

Aufgabe:
Seite mit eingefügten Objekten in die Zwischenablage kopieren.
Neue Tabelle, Kontexmenü / Inhalte einfügen - Zeichenketten, Zahlen, Datum, Formate, Objekte, Häkchen machen, OK - alles kommt rüber.

Aber, das mitgeschriebene Makro funktioniert nicht. Es trägt für die Funktion "Objekt einfügen" keinen Wert ein wie z.B. "V" für Zahlen.
Es sollen die Verknüpfungen aus der kopierten Tabelle nicht mitübertragen werden.
Was kann ich machen? Geht es nur bei mir nicht oder liegt es an OO calc?

Grübelgruß
Vanglio
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Aber, das mitgeschriebene Makro funktioniert nicht. Es trägt für die Funktion "Objekt einfügen" keinen Wert ein wie z.B. "V" für Zahlen.


?... Vielleicht könntest Du mal den Code posten
Es sollen die Verknüpfungen aus der kopierten Tabelle nicht mitübertragen werden.


was für Verknüpfungen? (Zellen,Objekte...)
Geht es nur bei mir nicht oder liegt es an OO calc?
bei mir funktioniert das, wenn ich so vorgehe wie beschrieben kann ich Folgendes aufzeichnen (SO 7 PP3 / W2k SP4):

Code: Alles auswählen

sub Main
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Nr"
args2(0).Value = 7

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args2())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(5) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "A"
args3(1).Name = "FormulaCommand"
args3(1).Value = 0
args3(2).Name = "SkipEmptyCells"
args3(2).Value = false
args3(3).Name = "Transpose"
args3(3).Value = false
args3(4).Name = "AsLink"
args3(4).Value = false
args3(5).Name = "MoveMode"
args3(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args3())


end sub
Was kann ich machen?


da Du die gesamte Tabelle kopieren willst kannst Du auch das Kopieren des Tabellenblattes mit dem Macrorekorder aufzeichnen


Gruß
Stephan
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Vorher und nachher Deinen Weg nachvollzogen. Mein Macrorekorder schreibt das "A" nicht. Wenn ich ihm das "A" nachträglich eintrage, fuktioniert es.


Ja, ich habe entweder manuell alles angehakt oder ebend den Haken bei 'alles' gesetzt was automatisch alles auswählt, wenn Du:
Zeichenketten, Zahlen, Datum, Formate, Objekte, Häkchen machen,
steht dann natürlich auch nur das Ausgewählte im Makro, also:

Code: Alles auswählen

args5(0).Name = "Flags"
args5(0).Value = "SVDT"
Abgesehen vom Makrorekorder, der nicht tut


ich denke es funktioniert bei Dir wenn Du A manuell einträgtst oder Du mußt ebend bei der Aufzeichung entsprechend 'alles' auswählen.
um unterschiedliche Kopieen dieser Tabelle als druckbare Vorlage ohne die Zellbezüge in einem neuen Ordner zu speichern.
Wenn Du nur die Ergebnisse willst mußt Du das Häkchen bei (Einfügen>Inhalte) Formeln entfernen, denn diese enthalten ja die Bezüge. Somit werden nur die Ergebnisse eingefügt. Ich weiß nicht wie Du den Druckbereich per Makro automatisch auslesen kannst, ändert der sich denn oft?
Hier gibt es einen Thread der etwas Code zu Druckbereichen enthält: http://www.oooforum.org/forum/viewtopic ... printareas .

Sonst kannst Du ihn auch einfach manuell eintragen. Ich habe das hier aufgezeichnet (ändere die Zeile 'args1(0).Value = "$A$1:$G$30"' entsprechend):

Code: Alles auswählen

sub Main5
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 args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$1:$G$30"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Nr"
args3(0).Value = 1

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(5) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "SVDT"
args5(1).Name = "FormulaCommand"
args5(1).Value = 0
args5(2).Name = "SkipEmptyCells"
args5(2).Value = false
args5(3).Name = "Transpose"
args5(3).Value = false
args5(4).Name = "AsLink"
args5(4).Value = false
args5(5).Name = "MoveMode"
args5(5).Value = 4

dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args5())
end sub
alle Objekte die mit übertragen werden sollen müssen an den Zellen des Druckbereichs verankert sein.

Ich weiß nicht was:
(a) druckbare Vorlage
(b) unterschiedliche Kopien
(c) in einem anderen Ordner

konkret bedeuten soll.

Gruß
Stephan
Antworten