.exe Datei (Aus C++) mit OpenOffice Calc öffnen
Moderator: Moderatoren
.exe Datei (Aus C++) mit OpenOffice Calc öffnen
Hallo,
ich muss gleich dazu sagen, dass ich mit Makro-Programmierung nicht so viel am Hut habe.
Ich suche eine Möglichkeit eine .exe-Datei aus Calc zu öffnen und dieser direkt Werte aus der OO-Datei zu übergeben. Die Operationen sind recht simpel - konkret sieht das so aus:
Bis jetzt speichere ich eine "Liste" von 24 Zahlen aus OO-Calc als .csv-Tabelle. Dann öffne ich das C++-Programm, welches wiederum die 24 Werte der .csv-Tabelle einliest und weiterverarbeitet.
Ziel ist es über einen Button oder eine Tastenkombination in OO-calc das Programm direkt zu öffnen und die Werte weiterzugeben. Ob es über den Zwischenschritt der .csv-Datei geht ist eigentlich nicht so wichtig - da kann ich evtl. auch das C++-Programm modifizieren.
Wäre nett, wenn mir jemand weiterhelfen könnte!
MfG,
David
ich muss gleich dazu sagen, dass ich mit Makro-Programmierung nicht so viel am Hut habe.
Ich suche eine Möglichkeit eine .exe-Datei aus Calc zu öffnen und dieser direkt Werte aus der OO-Datei zu übergeben. Die Operationen sind recht simpel - konkret sieht das so aus:
Bis jetzt speichere ich eine "Liste" von 24 Zahlen aus OO-Calc als .csv-Tabelle. Dann öffne ich das C++-Programm, welches wiederum die 24 Werte der .csv-Tabelle einliest und weiterverarbeitet.
Ziel ist es über einen Button oder eine Tastenkombination in OO-calc das Programm direkt zu öffnen und die Werte weiterzugeben. Ob es über den Zwischenschritt der .csv-Datei geht ist eigentlich nicht so wichtig - da kann ich evtl. auch das C++-Programm modifizieren.
Wäre nett, wenn mir jemand weiterhelfen könnte!
MfG,
David
Hey David,
also, ein exe-Programm kannst du direkt im Shell-Befehl ausführen. Dem Programmaufruf könntest du auch Parameter mitliefern - eben so wie auf der Kommandozeile. Du könntest beispielsweise deine 24 Werte als kommaseparierte Liste als ein Parameter übergeben - und dann müsste dein Programm diesen Parameter eben auswerten.
Das Prinzip sähe dann so aus:
Viele Grüße
Thomas
also, ein exe-Programm kannst du direkt im Shell-Befehl ausführen. Dem Programmaufruf könntest du auch Parameter mitliefern - eben so wie auf der Kommandozeile. Du könntest beispielsweise deine 24 Werte als kommaseparierte Liste als ein Parameter übergeben - und dann müsste dein Programm diesen Parameter eben auswerten.
Das Prinzip sähe dann so aus:
Code: Alles auswählen
sub Programm_Aufruf
sListe = "123, 234, 345, 456" 'deine Liste der Werte, kannst du
'natürlich per Makro erzeugen
sURL = "C:\Programme\meinProgramm.exe"
oService = createUnoService("com.sun.star.system.SystemShellExecute")
oService.execute(sURL, sListe ,0)
end sub
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Danke nochmal für die Hilfe, Thomas!Toxitom hat geschrieben:Code: Alles auswählen
sub Programm_Aufruf sListe = "123, 234, 345, 456" 'deine Liste der Werte, kannst du 'natürlich per Makro erzeugen sURL = "C:\Programme\meinProgramm.exe" oService = createUnoService("com.sun.star.system.SystemShellExecute") oService.execute(sURL, sListe ,0) end sub
Ich hab das jetzt auch mal umgesetzt & einige Teilerfolge errungen

Ich habe ein Makro erzeugt, dass mir die Werte in den Felder A1:A24 in einer .csv abspeichert, dann die .exe öffnet & die .csv einliest.
Natürlich funktioniert es auch, wenn man - wie du - die Werte per Hand im Makro eingibt, wobei ich die Variante OHNE "," gewählt habe (Für die Übergabe zur .exe besser).
Einfacher wäre es aber, wie gesagt, den Zwischenschritt .csv auszulassen und die Werte direkt in der" sListe" zu speichen.
Habe es in deinem Programmbeispiel mit folgendem versucht:
Code: Alles auswählen
...
sListe = "$A$1:$A$24"
...
Code: Alles auswählen
...
sListe = "$Tabelle1.$AV$1:$AV$24"
...


Ich denke mir, dass das Problem trivial ist, aber es wäre trotzdem nett, wenn mir jemand helfen könnte.

MfG,
David
Hey David,
Na ja, einen String aus Feldinhalten zu erzeugen ist nicht schwer, du brauchst halt eine Schleife....
also bei dir:
liefert dir die Inhalte der Zellen A1-a24 des ersten Tabellenblattes als ein mit Leerzeichen getrennter String, am Ende ist allerdings auch noch ein Leerzeichen!
Vielleicht hilft dir das.
Gruss
Thomas
Na ja, einen String aus Feldinhalten zu erzeugen ist nicht schwer, du brauchst halt eine Schleife....
also bei dir:
Code: Alles auswählen
dim s as string
for i = 1 to 24
oZelle = ThisComponent.sheets(0).getCellRangeByName("A"& i)
s = s & oZelle.value & " "
next
msgbox s
Vielleicht hilft dir das.
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Ja, es hat mir geholfen! DANKE!Toxitom hat geschrieben:Hey David,
Na ja, einen String aus Feldinhalten zu erzeugen ist nicht schwer, du brauchst halt eine Schleife....
...
Vielleicht hilft dir das.
Gruss
Thomas
Muss aber dazu sagen, dass ich trotz ein wenig Programmier-Erfahrung die Syntax bzw. die Befehle der Makro-Programmierung nicht gerade einfach finde. Wenn ich mir da den Quellcode eines "aufgenommenen" Makros durchlese, verstehe ich nur Bahnhof

Vielen Dank für die schnelle & fachkundige Hilfe!
Gruss,
David
Hey David,
lass den Makro-Rekorder auf jeden Fall weg - da lernst du gar nichts und es verwirrt nur.
OOo verwendet zwei Möglichkeiten der Skript-Programmierung: Den "normalen" code, objektorientiert (UNO) und den "Dispatcher-Mode", eine Art "Helferlein" Der Dispatchercode führt vordefinierte Aufgaben aus - festgelegt durch spezielle Schlüsselwörter. Hier kannst du kaum etwas verändern, lernen oder ähnliches - entweder es funktioniert oder eben nicht.
Der Rekorder kann nur Dispatcher-Code aufzeichnen, aber leider geht nicht alles damit. Also, beachte dieses erst gar nicht.
Gruss
thomas
lass den Makro-Rekorder auf jeden Fall weg - da lernst du gar nichts und es verwirrt nur.
OOo verwendet zwei Möglichkeiten der Skript-Programmierung: Den "normalen" code, objektorientiert (UNO) und den "Dispatcher-Mode", eine Art "Helferlein" Der Dispatchercode führt vordefinierte Aufgaben aus - festgelegt durch spezielle Schlüsselwörter. Hier kannst du kaum etwas verändern, lernen oder ähnliches - entweder es funktioniert oder eben nicht.
Der Rekorder kann nur Dispatcher-Code aufzeichnen, aber leider geht nicht alles damit. Also, beachte dieses erst gar nicht.
Gruss
thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic