Calc: Bereich in andere Datei kopieren
Moderator: Moderatoren
Calc: Bereich in andere Datei kopieren
Ein Hallo an die OOo Fans.
Habe ein Problem mit der Aufzeichnung eines Makros mittels Recorder. Der Recorder zeichnet nur die Schritte der aktiven Datei auf.
Wer kann mir helfen?
Der Vorgang sollte wie folgt ablaufen:
In Quelldatei ("DP1") Breich kopieren
In Zieldatei ("DP2") Bereich einfügen. ( Zahlen; Text; Datum und Format)
Danke im Voraus.
mfg Walter
Moderation,4: in BASIC-Unterforum verschoben; Titel geändert
Habe ein Problem mit der Aufzeichnung eines Makros mittels Recorder. Der Recorder zeichnet nur die Schritte der aktiven Datei auf.
Wer kann mir helfen?
Der Vorgang sollte wie folgt ablaufen:
In Quelldatei ("DP1") Breich kopieren
In Zieldatei ("DP2") Bereich einfügen. ( Zahlen; Text; Datum und Format)
Danke im Voraus.
mfg Walter
Moderation,4: in BASIC-Unterforum verschoben; Titel geändert
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc: Bereich in andere Datei kopieren
Naja... wenn der Inhalt in der Zwischenablage ist, kann er -auch mit einem dispatcher-Befehl- eingefügt werden.
(die Variable document muss natürlich auf das Zieldokument gesetzt werden und der Cursor muss positioniert sein)
Vielleicht kommt Walter ja damit weiter.
Ansonsten gibt es hier im Forum schon mehrere Threads, die sich mit exakt der gleichen Fragestellung beschäftigten - und die Aufgabe mit StarBasic lösten.
Code: Alles auswählen
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
Vielleicht kommt Walter ja damit weiter.
Ansonsten gibt es hier im Forum schon mehrere Threads, die sich mit exakt der gleichen Fragestellung beschäftigten - und die Aufgabe mit StarBasic lösten.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Calc: Bereich in andere Datei kopieren
Innerhalb der gleichen Datei mit mehren Tabellen habe ich gut aufzeichnen können. Leider wird die ganze Geschichte mit jedem Makro immer langsamer (bis zu
10 Minuten für einen Ausdruck). Deshalb möchte ich für den Ausdruck alle Daten reinholen.
mfg Walter
10 Minuten für einen Ausdruck). Deshalb möchte ich für den Ausdruck alle Daten reinholen.
mfg Walter
Re: Calc: Bereich in andere Datei kopieren
Hallo "komma4",komma4 hat geschrieben:Naja... wenn der Inhalt in der Zwischenablage ist, kann er -auch mit einem dispatcher-Befehl- eingefügt werden.
(die Variable document muss natürlich auf das Zieldokument gesetzt werden und der Cursor muss positioniert sein)Code: Alles auswählen
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
Vielleicht kommt Walter ja damit weiter.
Ansonsten gibt es hier im Forum schon mehrere Threads, die sich mit exakt der gleichen Fragestellung beschäftigten - und die Aufgabe mit StarBasic lösten.
danke für deinen Hinweis. Bin einige Stunden am experimentieren und stöbern, komme aber trotztem nicht weiter.
Kannst du mir drüberhelfen? Mein Code schaut so aus:
Code: Alles auswählen
sub kopi1
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$AA$4:$AB$33"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem Hier ist meine grosse Hürde!!!!
rem Hier ist meine grosse Hürde!!!!
rem Wie komme ich zur Zieldatei???
rem Habe meine Dateien "Quelldatei" und "Zieldatei" getauft
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$K$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
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
mfg Walter
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc: Bereich in andere Datei kopieren
Die Variable document bezieht sich auf den Anwendungsrahmen des Dokuments.
Deshalb musst Du sie zweimal haben (Quelle/Ziel).
Um sie im Code zu bestimmen, habe ich im folgenden Beispiel beide Dateien mit Code geöffnet.
Du kommst damit zurecht?
Deshalb musst Du sie zweimal haben (Quelle/Ziel).
Um sie im Code zu bestimmen, habe ich im folgenden Beispiel beide Dateien mit Code geöffnet.
Code: Alles auswählen
sub de47205
' 2011-03-05
' OOo 3.2.1 / openSuse 11.1
sZiel = "/zentrale/Documents/daten/testdata/ziel.ods"
URLZiel = ConvertToURL( sZiel )
oZiel = StarDesktop.loadComponentFromURL( URLZiel,"_blank", 0, Array() )
oZielFrame = oZiel.CurrentController.Frame
sQuelle = "/zentrale/Documents/daten/testdata/quelle.ods"
URLQuelle = ConvertToURL( sQuelle )
oQuelle = StarDesktop.loadComponentFromURL( URLQuelle,"_blank", 0, Array() )
oQuelleFrame = oQuelle.CurrentController.Frame
dim dispatcher as object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$AA$4:$AB$33"
dispatcher.executeDispatch(oQuelleFrame, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(oQuelleFrame, ".uno:Copy", "", 0, Array())
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$K$3"
dispatcher.executeDispatch(oZielFrame, ".uno:GoToCell", "", 0, args4())
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(oZielFrame, ".uno:InsertContents", "", 0, args5())
end sub
Du kommst damit zurecht?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Calc: Bereich in andere Datei kopieren
Hallo Winfried,
vorerst danke für deine Antwort.
Leider komme ich noch nicht klar. Habe die Dateien in "Quelle" und "Ziel" umgeschrieben und die Adressen berichtigt. Doch ohne Erfolg.
Zum Verständnis hänge ich den Code nochmals an und bitte dich mir zu schreiben wo ich Fehler gemacht habe.
Vielen Dank mfg Walter
vorerst danke für deine Antwort.
Leider komme ich noch nicht klar. Habe die Dateien in "Quelle" und "Ziel" umgeschrieben und die Adressen berichtigt. Doch ohne Erfolg.
Zum Verständnis hänge ich den Code nochmals an und bitte dich mir zu schreiben wo ich Fehler gemacht habe.
Code: Alles auswählen
sub de47205
' 2011-03-05
' OOo 3.2.1 / openSuse 11.1
sZiel = "/zentrale/Documents/daten/testdata/ziel.ods"
URLZiel = ConvertToURL( sZiel )
oZiel = StarDesktop.loadComponentFromURL( URLZiel,"_blank", 0, Array() )
oZielFrame = oZiel.CurrentController.Frame
sQuelle = "/zentrale/Documents/daten/testdata/quelle.ods"
URLQuelle = ConvertToURL( sQuelle )
oQuelle = StarDesktop.loadComponentFromURL( URLQuelle,"_blank", 0, Array() )
oQuelleFrame = oQuelle.CurrentController.Frame
dim dispatcher as object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$a$100:$Z$140"
dispatcher.executeDispatch(oQuelleFrame, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(oQuelleFrame, ".uno:Copy", "", 0, Array())
'Muss ich nicht hier noch was reinschreiben?
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$a$150"
dispatcher.executeDispatch(oZielFrame, ".uno:GoToCell", "", 0, args4())
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(oZielFrame, ".uno:InsertContents", "", 0, args5())
end sub
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc: Bereich in andere Datei kopieren
Walter: ich sehe nicht, dass Du die "Adressen" (nehme an: die Dateinamen) korrigiert hast.Walter43 hat geschrieben: Habe die Dateien in "Quelle" und "Ziel" umgeschrieben und die Adressen berichtigt. Doch ohne Erfolg.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Calc: Bereich in andere Datei kopieren
Hallo Winfried,
stimmt habe jetzt aber doch die Adressen geändert.
Das Makro bleibt aber an dieser Stelle hängen.
Die Fehlermeldung lautet: Basic Laufzeitfehler
Es ist eine Exzeption aufgetreten.
Type: com.sun.star.lang.illegalArgumentExzeption
Message: URL seems to bean insupported one
Damit bin ich überfordert.
Kannst du mir sagen was ich umschreiben muss? Danke für deine Bereitchaft.
mfg Walter
apple leopart, OOo 3.2
stimmt habe jetzt aber doch die Adressen geändert.
Das Makro bleibt aber an dieser Stelle hängen.
Code: Alles auswählen
oZiel = StarDesktop.loadComponentFromURL( URLZiel,"_blank", 0, Array() )
Es ist eine Exzeption aufgetreten.
Type: com.sun.star.lang.illegalArgumentExzeption
Message: URL seems to bean insupported one
Damit bin ich überfordert.
Kannst du mir sagen was ich umschreiben muss? Danke für deine Bereitchaft.
mfg Walter
apple leopart, OOo 3.2
Re: Calc: Bereich in andere Datei kopieren
Hallo Winfried,
zum besseren Verständnis sende ich besser den ganzen Code.
mfg Walter
zum besseren Verständnis sende ich besser den ganzen Code.
mfg Walter
Code: Alles auswählen
sub de47205
' 2011-03-05
' OOo 3.2.1 / openSuse 11.1
sZiel = "/Users/walteroswald/Documents/ziel.ods"
URLZiel = ConvertToURL( sZiel )
oZiel = StarDesktop.loadComponentFromURL( URLZiel,"_blank", 0, Array() )
oZielFrame = oZiel.CurrentController.Frame
sQuelle = "/Users/walteroswald/Documents/quelle.ods"
URLQuelle = ConvertToURL( sQuelle )
oQuelle = StarDesktop.loadComponentFromURL( URLQuelle,"_blank", 0, Array() )
oQuelleFrame = oQuelle.CurrentController.Frame
dim dispatcher as object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$a$100:$Z$140"
dispatcher.executeDispatch(oQuelleFrame, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(oQuelleFrame, ".uno:Copy", "", 0, Array())
'Muss ich nicht hier noch was reinschreiben?
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$a$150"
dispatcher.executeDispatch(oZielFrame, ".uno:GoToCell", "", 0, args4())
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(oZielFrame, ".uno:InsertContents", "", 0, args5())
end sub
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Calc: Bereich in andere Datei kopieren
Walter: Du hast ein UNIX-System?
Unter Windows muss sZiel den vollständigen Pfad inkl. Laufwerksbuchstaben haben, bspw.: d:\Users\walteroswald\Documents\ziel.ods
Unter Windows muss sZiel den vollständigen Pfad inkl. Laufwerksbuchstaben haben, bspw.: d:\Users\walteroswald\Documents\ziel.ods
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Calc: Bereich in andere Datei kopieren
Hallo,
ich habe Mac Leopard. Danke
mfg Walter
ich habe Mac Leopard. Danke
mfg Walter
Re: Calc: Bereich in andere Datei kopieren
Hallo foobar^,
danke für deinen Hinweis. Ich denke das ist genau das was ich brauche.
mfg Walter
danke für deinen Hinweis. Ich denke das ist genau das was ich brauche.
mfg Walter