Ausgewählte Felder kopieren und in xml File abspeichern
Moderator: Moderatoren
Ausgewählte Felder kopieren und in xml File abspeichern
Ich möchte ein Makro schreiben um aus einem OpenOffice Calc Dokument den Inhalt der gerade selektierten Felder herauszulesen und dann automatisch in einem xml File abzuspeichern. Das Ganze stell ich mir so vor das man die gewünschten Felder markiert und dann über einen Button (der ja einfach dazu erstellt werden kann) das Makro startet.
Kann mir da jemand helfen?
Kann mir da jemand helfen?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ausgewählte Felder kopieren und in xml File abspeichern
Willkommen im Forum.
Wie weit kennst Du Dich mit Programmierung aus?
Bei welcher Frage?cronus hat geschrieben:Kann mir da jemand helfen?
Wie weit kennst Du Dich mit Programmierung aus?
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: Ausgewählte Felder kopieren und in xml File abspeichern
Naja, ich kann die Selektion einlesen, das Problem ist einfach das ich keine Ahnung habe wie ich daraus ein xml file mache!
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ausgewählte Felder kopieren und in xml File abspeichern
Das SDK hat XML Objekte (com.sun.star.xml.***), oder mit einfachen WRITE Anweisungen.
Sieh' Dir mal den Code vom BasicAddonBuilder an.
Viel Erfolg!
Sieh' Dir mal den Code vom BasicAddonBuilder an.
Viel 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: Ausgewählte Felder kopieren und in xml File abspeichern
Danke, beim BasicAddonBuilder blick ich überhaupt nicht durch, kenn mich einfach zu wenig auskomma4 hat geschrieben:Das SDK hat XML Objekte (com.sun.star.xml.***), oder mit einfachen WRITE Anweisungen.
Sieh' Dir mal den Code vom BasicAddonBuilder an.
Viel Erfolg!

"Programmieren in Basic mit OOo-Calc" aus dem ersten Post von Stephan hab ich jetzt mehr oder weniger ganz durch und versteh das Zeug eigentlich auch. Hab darauf jetzt nochmals neu angefangen und jetzt gleich schon ein Problem mit der Selektion wenn es ein Zellbereich ist.
Ich überprüfe ob es eine einzelner Selektierte Zelle ist oder ein ganzer Bereich. Falls einzelne Zelle ist das ja kein Problem, aber sobald es ein Zellbereich versteh ich nicht wie ich am einfachsten an den Inhalt der einzelnen Zellen komme???
Ich hole mir so den ausgewählten Bereich: selektion = calcDokument.getCurrentSelection()
Aber wie ist jetzt der was ist jetzt genau in selektion drin?
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ausgewählte Felder kopieren und in xml File abspeichern
Beim Blättern im BASIC Unterforum sollte Dir schon öfter der Verweis auf Xray begegnet sein. Damit kommst Du bei Deiner o.a. Frage bestimmt weiter.cronus hat geschrieben:Aber wie ist jetzt der was ist jetzt genau in selektion drin?
Auch kennst Du Andrew Pitonyaks Makro Dokument (oder etwa nicht?)- da gibt es auch eine deutsche Übersetzung von ...
Und wenn Du den Code vom B.A.B. nicht "lesen" kannst, dann solltest Du die XML wohl mit einfachen BASIC-Befehlen erstellen - siehe dazu die OOo Online Hilfe zu Basic, Stichworte OPEN, WRITE, CLOSE.
Viel 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: Ausgewählte Felder kopieren und in xml File abspeichern
Ja ich kenn das Makro Dokument von Andrew Pitonyaks, ist genau das gleiche wie bei dem anderen. Es wird immer nur erklärt wie man die Position des Bereiches und solche Dinge bekommt, aber nie wie man es auslesen kann.
Mit Xray geht bei mir gar nichts. Ich installiere es und versuche ein 1 zu 1 Beispiel:
sub main
basicLibraries.loadLibrary("Xray")
if fnWhichComponent(thisComponent) = "Text" then
oCurSelection = thisComponent.getCurrentSelection()
'xray.xray oCurSelection
if oCurSelection.supportsService("com.sun.star.text.TextRanges") then
msgbox "There are " & oCurSelection.getCount() & _
" selections in the current text document."
end if
end if
end sub
und dann kommt jedesmal:
BASIC-Laufzeitfehler
Es ist eine Exception aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
Xray ist aber in der Bibliothek drin!
Mit Xray geht bei mir gar nichts. Ich installiere es und versuche ein 1 zu 1 Beispiel:
sub main
basicLibraries.loadLibrary("Xray")
if fnWhichComponent(thisComponent) = "Text" then
oCurSelection = thisComponent.getCurrentSelection()
'xray.xray oCurSelection
if oCurSelection.supportsService("com.sun.star.text.TextRanges") then
msgbox "There are " & oCurSelection.getCount() & _
" selections in the current text document."
end if
end if
end sub
und dann kommt jedesmal:
BASIC-Laufzeitfehler
Es ist eine Exception aufgetreten
Type: com.sun.star.container.NoSuchElementException
Message: .
Xray ist aber in der Bibliothek drin!
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ausgewählte Felder kopieren und in xml File abspeichern
ich lade per Befehl XrayTool(nicht "Xray"), dann erfolgt der Anfruf mit
Hilft Dir das weiter?
Code: Alles auswählen
xray oCurSelection
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: Ausgewählte Felder kopieren und in xml File abspeichern
Ne, der Fehler passiert schon ganz oben, er markiert: basicLibraries.loadLibrary("Xray")komma4 hat geschrieben:ich lade per Befehl XrayTool(nicht "Xray"), dann erfolgt der Anfruf mitHilft Dir das weiter?Code: Alles auswählen
xray oCurSelection
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ausgewählte Felder kopieren und in xml File abspeichern
Das liegt daran, dass es keine Bibliothek Xray gibt (zumindest nicht in meiner Version: dort heissen die LIBs XrayTool und XrayDyn)
Das sagt Dir ja auch die Meldung: eine solches Element ist nicht vorhanden
Das sagt Dir ja auch die Meldung: eine solches Element ist nicht vorhanden
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: Ausgewählte Felder kopieren und in xml File abspeichern
Daraufhin kommt einfach der nächste Fehler bei der nächsten Zeile
BASIC runtime error.
Sub-procedure or function procedure not definied.
Naja, das ist der Grund wieso ich damit nicht weitergemacht habe. Es kann ja eigentlich nicth sein das wenn ich den Code genau kopiere, es einen Fehler nachdem anderen gibt.
Übrigens danke das du mir immer so prompt hilfst
BASIC runtime error.
Sub-procedure or function procedure not definied.
Naja, das ist der Grund wieso ich damit nicht weitergemacht habe. Es kann ja eigentlich nicth sein das wenn ich den Code genau kopiere, es einen Fehler nachdem anderen gibt.
Übrigens danke das du mir immer so prompt hilfst

Re: Ausgewählte Felder kopieren und in xml File abspeichern
Hallo Cronus,
Ausgehend von Andrew Pitonyaks Codebeispiel versuche doch einfach mal:
Willst Du die xml-Elemente schlicht als Textfolge erzeugen oder hast Du schon an Dom gedacht?
Schöne Grüße
Volker
Ausgehend von Andrew Pitonyaks Codebeispiel versuche doch einfach mal:
Code: Alles auswählen
Sub TestDataArray()
dim oDoc as object
dim oSels as object
dim oData() as object
dim oRow() as object
dim i as integer, j as integer
oDoc = ThisComponent
oSels = oDoc.getCurrentSelection()
if IsNull(oSels) then
print "Nix selektiert."
elseif oSels.supportsService("com.sun.star.sheet.SheetCell") then
print "Nur 1 Zelle reicht nicht."
elseif oSels.supportsService("com.sun.star.sheet.SheetCellRanges") then
print "Getrennte Zellbereiche will ich nicht."
elseif oSels.supportsService("com.sun.star.sheet.SheetCellRange") then
print "OK. Los gehts."
oData() = oSels.getDataArray()
for i = lbound(oData) to ubound(oData)
oRow() = oData(i)
for j = lbound(oRow) to ubound(oRow)
print ("Spalte " + j + ": " + oRow(j))
next
next
else
print "Irgendwas Seltsames selektiert. Kein Bedarf."
end if
End Sub
Schöne Grüße
Volker
Schöne Grüße
Volker
Volker
Re: Ausgewählte Felder kopieren und in xml File abspeichern
Vielen Dank preklov. Das kann ich sehr gut gebrauchen und meinen Code damit anpassen 
Momentan reicht eine Textfolge, die Richtige Formatierung wäre dann der nächste Schritt, da muss ich aber zuerst auch noch schauen wie ich das genau möchte!

Momentan reicht eine Textfolge, die Richtige Formatierung wäre dann der nächste Schritt, da muss ich aber zuerst auch noch schauen wie ich das genau möchte!
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Ausgewählte Felder kopieren und in xml File abspeichern
Das bedeutet dann wohl, dass Du die Funktion fnWhichComponent nicht bereit stellst ...cronus hat geschrieben:Sub-procedure or function procedure not definied.
Woher hast Du den Code? Die Funktion ist nämlich nicht im Lieferumfang einer Standard-OOo Installation.
@Volker: bzgl. DOM - siehe Posting von gestern, 14:47h. Für einen Anfänger keine einfache Sache ... XML-LESE-Beispiele gibt es einige, ich fand bislang (zugegeben: keine ausführliche Suche) keine schreibenden Beispiele.
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: Ausgewählte Felder kopieren und in xml File abspeichern
Hallo Winfried,
Aber Du hast Recht. Das hilft dem OP nicht.
Schöne Grüße
Volker
Schade, ich nämlich auch nicht. Ich wollte mich aber schon lange mal mit Java beschäftigen. Wäre doch ein Anlass, denn dort gibt es die TransformerFactory.XML-LESE-Beispiele gibt es einige, ich fand bislang (zugegeben: keine ausführliche Suche) keine schreibenden Beispiele.
Aber Du hast Recht. Das hilft dem OP nicht.
Schöne Grüße
Volker
Schöne Grüße
Volker
Volker