Date: prev next · Thread: first prev next last
2017 Archives by date, by thread · List index


Hallo,

folgendes Makro-Problem:

Mit einem kleinen Perl-Programm [2] starte ich ein Makro [1], das (in diesem vereinfachten Beispiel) weiter nichts tut, als in einer bestehenden CALC-Datei ("E:\TMP\RunMacroHidden.ods") in die Zelle "A1" die Zeichenkette "Hello world !" zu schreiben

So lange die beiden Makro-Zeilen | ' aPV1(0).name = "Hidden" | und | ' aPV1(0).value = True | (entnommen von [4]) auskommentiert sind funktioniert alles prima.

Jetzt möchte ich aber, dass das Ganze "Hidden" abläuft, die Tabellendatei nicht geöffnet wird.

Wenn ich nun die beiden oben genannten Zeilen de-kommentiere, kommt für die Makrozeile "oF = ThisComponent.CurrentController.Frame" die Fehlermeldung "BASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: CurrentController."

Im Prinzip meine ich schon zu verstehen, warum: Da nix mehr angezeigt wird, gibt es wohl auch keinen "CurrentController". Und in Folge davon hat dann auch die Objekt-Variable "oF", die bei den "uno"-Kommandos benötigt wird, sicherlich auch keinen Inhalt.

So meine Frage:

Was muss man anders beziehungsweise noch zusätzlich angeben, damit die Fehlermeldung nicht mehr kommt und die Objekt-Variable "oF" die "uno"-Kommandos mit der benötigten Information versorgt ?

In [3] "OpenOffice.org-Makros" sowie [4] "OpenOffice.org Makros - Kochbuch" wird zwar eine Menge zur Funktionsweise von "StarDesktop"/"Frames" ausgeführt und in [4] erscheint mir die Zeile "oDoc.getCurrentController().getFrame().getContainerWindow().setVisible(true)" sehr hinweisverdächtig was zu tun ist, aber dennoch hat es bei mir nicht den Geistesblitz für die richtigen Schlussfolgerungen erzeugt - leider, ich komme da nicht wirklich weiter :-(( ...

Vielen Dank im Voraus für Hinweise und Tipps,

Grüße
Hans-Werner

---------------

[1] Makro

Sub RunMacroHidden

Dim oD as Object
Dim oDoc as Object
Dim oF as Object
Dim PathFile as String
Dim aPV1(0) as New com.sun.star.beans.PropertyValue

PathFile = "E:\TMP\RunMacroHidden.ods"
oD = createUnoService("com.sun.star.frame.DispatchHelper")

' aPV1(0).name = "Hidden"
' aPV1(0).value = True

oDoc = StarDesktop.loadComponentFromURL(ConvertToURL(PathFile),"_blank",0,aPV1())
oF = ThisComponent.CurrentController.Frame

aPV1(0).Name = "Nr"
aPV1(0).Value = 1
oD.executeDispatch(oF,".uno:JumpToTable","",0,aPV1()

aPV1(0).Name = "ToPoint"
aPV1(0).Value = "A1"
oD.executeDispatch(oF,".uno:GoToCell","",0,aPV1())
aPV1(0).Name = "StringName"
aPV1(0).Value = "Hello world !"
oD.executeDispatch(oF,".uno:EnterString","",0,aPV1()

aPV1(0).Name = "ToPoint"
aPV1(0).Value = "A1"
oD.executeDispatch(oF,".uno:GoToCell","",0,aPV1())
oD.executeDispatch(oF,".uno:Save", "",0,Array())
oD.executeDispatch(oF,".uno:CloseDoc","",0,Array())
oD.executeDispatch(oF,".uno:CloseWin","",0,Array())

End Sub

[2] Externer Makro-Aufruf via Perl

use strict;
use warnings;

my $L; # Libre Office
my $M; # Makro

$L = "C:/Program Files/LibreOffice 5/program/soffice.exe";
$M = "macro:///Standard.Temporary.RunMacroHidden";

`"$L" --nologo "$M"`;

---------------

[3] Andrew Pitonyak: OpenOffice.org-Makros erklärt - Ins Deutsche übertragen und mit einem Beitrag von Volker Lenhardt ( http://www.uni-due.de/~abi070/count.php?id=OOME_3_0_deutsch.odt )

[4] Thomas Krumbein: OpenOffice.org Makros - Kochbuch ( https://www.wollmux.net/wiki/images/f/f9/Makro_Kochbuch.pdf )

--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.