Start eines Makros

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Philipp_19
****
Beiträge: 115
Registriert: Mo, 29.08.2011 09:01
Wohnort: Duisburg

Start eines Makros

Beitrag von Philipp_19 »

Hallo Community,

Seit einiger Zeit arbeite ich an einer Lösung, Makros aus Vorlagen heraus zu laden. Über ein kleines Hilfsmakro und einem Event war ich dazu nun in der Lage.
Leider tritt dennoch ein Problem auf, das nicht ganz unerheblich ist.
Nachdem aus der Vorlage heraus ein Dokument geladen wurde, greifen die Makros nicht sofort. Erst nach einer belanglosen Aktion (Menüleiste benutzt, Dokument verkleinert u. vergrößert, etc.) greifen die Makros.
Dies ist jedoch nicht immer der Fall. Bei einem Makro um Bilder zu laden greift das Makro sofort, ohne Probleme.
In den betroffenen Vorlagen sind Makros mit einem "Wait 1" versehen, da die Makros sonst falsch arbeiten.
Gibt es da Ideen, um das Problem zu beseitigen?

Zweites Problem: Mein oben genanntes Bilder-Makro arbeitet...komisch. Das Bild wird geladen. Bei manchen Dokumenten wird das Bild nicht an der richtigen Stelle angezeigt, klicke ich aber dorthin, wo das Bild sein soll, wird die Makierung des Bildes sichtbar (grüne Ecken) und das Bild springt zu seiner eigentlichen Position. In anderen Dokumenten verschiebt sich das Bild merkwürdig. Die obere Hälfte ist an der richtigen Position, die untere ist um einige cm nach rechts verschoben. Verkleinern u. vergrößern, bild anwählen oder andere aktionen richten das Bild dann vollständig.
Wieso ist das so bzw. was kann ich dagegen tuen?

Hoffe das ist alles soweit verständlich.
Grüße
Windows XP, OOo 3.3.0
oder
Windows 7, OOo 3.3.0
Philipp_19
****
Beiträge: 115
Registriert: Mo, 29.08.2011 09:01
Wohnort: Duisburg

Re: Start eines Makros

Beitrag von Philipp_19 »

Grüße,

Zu meinem ersten Punkt habe ich eine, für mich, merkwürdige Auffälligkeit bemerkt:

Setze ich direkt nach der Zeile Sub Makroname eine MessageBox, startet das Makro sofort, ohne zu meckern.
Jeder andere Befehl hingegen wird übergangen, bis oben beschriebene Aktionen getätigt werden.
Auch ein ThisComponent.refresh() wird einfach nicht genommen.

Warum wird die MessageBox sofort akzeptiert und ausgeworfen, bzw. warum startet das Makro sofort?
Haben die eine besondere Priorität oder wie muss ich mir das vorstellen?

Entschuldigt das es keine Beispieldatei gibt, aber die Vorlagen werden über eine Software aufgerufen, Textmarken aus einer Datenbank heraus gefüllt und so weiter. Vielleicht kennt sich ja dennoch jemand so gut mit der Materie aus.

Grüße
Windows XP, OOo 3.3.0
oder
Windows 7, OOo 3.3.0
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Start eines Makros

Beitrag von Stephan »

Setze ich direkt nach der Zeile Sub Makroname eine MessageBox, startet das Makro sofort, ohne zu meckern.
Und das unterscheidet sich nun wie von Deiner ursprünglichen Aussage? Dort jedenfalls ist zunächst NICHT die Rede davon das kein Makro startet, sonder lediglich davon das keine Aktion ausgeführt wird.
Jeder andere Befehl hingegen wird übergangen
sehr schwer vorstellbar, ich könnte mir höchstens denken das jeder der KONKRET VERWENDETEN Befehle übergangen wird, die jedoch kann hier niemand kennen, da keiner das Makro kennt.
Auch ein ThisComponent.refresh() wird einfach nicht genommen.
In einer Situation wo er VERFÜGBAR ist? Das möchte ich stark bezweifeln.

Hast Du überhaupt geprüft (z.B. mit .dbg_methods) ob .refresh() verfügbar ist?
Warum wird die MessageBox sofort akzeptiert und ausgeworfen, bzw. warum startet das Makro sofort?
Wie soll man das beantworten ohne das konkrete Makro und die Art des Startens zu kennen?

Allenfalls kann man mutmaßen, nämlich das die Messsage-Box keinen Objekt-Bezug braucht und deshalb immer startet, weil man sie aber manuell beenden muß dabei zwangsweise der Fokus wechselt und dadurch unbeabsichtigt auch ein Objektbezug (mutmaßlich auf das dann aktive Dokument) hergestellt wird.
Entschuldigt das es keine Beispieldatei gibt, aber die Vorlagen werden über eine Software aufgerufen, Textmarken aus einer Datenbank heraus gefüllt und so weiter.
Keine Ahnung was uns das im Konkreten sagen soll, ein Posten von Code sollte immer möglich sein.



Gruß
Stephan
Philipp_19
****
Beiträge: 115
Registriert: Mo, 29.08.2011 09:01
Wohnort: Duisburg

Re: Start eines Makros

Beitrag von Philipp_19 »

Code: Alles auswählen

Sub Start
       [b]MsgBox ("Report wurde erfolgreich generiert.", 64, "Report")[/b]
	Dim b as String
	Dim doc as Object
	
	doc = ThisComponent
	Tables = doc.GetTextTables()
	Table = Tables.GetByIndex(0)
	b = Table.GetCellByPosition(0,1).GetString()
	
	Do While b = ""
		wait 10
		b = Table.GetCellByPosition(0,1).GetString()
	Loop
	Call Makroname 'anderes Makro
End Sub
Stephan hat geschrieben:Und das unterscheidet sich nun wie von Deiner ursprünglichen Aussage? Dort jedenfalls ist zunächst NICHT die Rede davon das kein Makro startet, sonder lediglich davon das keine Aktion ausgeführt wird.
Ich hätte meine kompletten Beobachtungen schreiben sollen: Das Makro startet einfach nicht beim Aufruf der Vorlage aus der Software heraus. Das liegt aber daran, dass Vorlagen nicht mehr mit Events verknüpft werden können.
Dieses Makro startet nicht. Ich habe es mit einigen MessageBoxen rausgefunden, weil ich wissen wollte wo es noch läuft.
Stephan hat geschrieben:In einer Situation wo er VERFÜGBAR ist? Das möchte ich stark bezweifeln.
Das musst du mir erklären. Was meinst du mit verfügbar?
Stephan hat geschrieben:Keine Ahnung was uns das im Konkreten sagen soll, ein Posten von Code sollte immer möglich sein.
Im Konkreten will ich damit sagen, das ihr die Problematik wohl unmöglich nachstellen könnt. Ich bezweifle stark, das hier einer unsere Hauseigene Software benutzt ;-)


Meiner Vermutung nach wird durch die MsgBox dem Makro vermittelt, das es sich bei dem Dokument nicht mehr um eine Vorlage, sondern um ein Dokument handelt. Ich möchte verstehen, wieso die MessageBox diese Änderung bewirkt. Diese Dokumente sind für Kunden, und am besten wäre es, wenn ich diese MsgBox durch irgendwas ersetzen kann, was der Kunde nicht jedes mal wegklicken muss.

Grüße
Windows XP, OOo 3.3.0
oder
Windows 7, OOo 3.3.0
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Start eines Makros

Beitrag von Stephan »

Ich hätte meine kompletten Beobachtungen schreiben sollen: Das Makro startet einfach nicht beim Aufruf der Vorlage aus der Software heraus. Das liegt aber daran, dass Vorlagen nicht mehr mit Events verknüpft werden können.
'Interassant', sagt mir zwar nichts aber ich nehme das mal so zur Kenntnis.
Dieses Makro startet nicht. Ich habe es mit einigen MessageBoxen rausgefunden,
Keine Ahnung wie das unter den KONKRETEN Umständen gehen soll da Du doch selbst schreibst (oder habe ich das mißverstanden?) das eine Messagebox den Start des Makros triggert (auch ohne das ich schon wüßte warum es dazu kommt das eine Messgabox das bewirkt).
Was meinst du mit verfügbar?
Das er in der konkreten Situation verfügbar ist. Du selbst sprachst doch von ThisComponent.refresh() und für ThisComponent funktioniert .refresh() nun einmal nur in bestimmten Situationen, da ThisComponent verschiedene Dinge repräsentieren kann. Zwar sollte in solchen Situationen ein ThisComponent.refresh() eine FEhlermeldung liefern, aber wir sind hier auf Fehlersuche und da ist die Kenntnis der konkreten Verfügbarkeit zunächst hilfreich um Probleme auszuschließen oder eine Ansatz zu finden.
Ich hatte ja bereits geraten einfach die aktuell verfügbaren Methoden anzeigen zu lassen.
Meiner Vermutung nach wird durch die MsgBox dem Makro vermittelt, das es sich bei dem Dokument nicht mehr um eine Vorlage, sondern um ein Dokument handelt.
Ich weiß leider nicht wie Du darauf kommst.
Im Konkreten will ich damit sagen, das ihr die Problematik wohl unmöglich nachstellen könnt. Ich bezweifle stark, das hier einer unsere Hauseigene Software benutzt


und ich bezweifle das ich noch Lust habe zu helfen ... ich jedenfalls verspüre wenig Lust mir hier in 'jedem zehnten Thread' immer wieder erklären zu lassen das ja 'dieses oder jenes nicht sein kann' (warum wird dann überhaupt gefragt wenn man selbst die Antwort schon kennt) oder das man Code nicht posten könne weil der geheim wäre (dann ist ein öffentliches Forum ein ungeeigneter Ort für eine Diskussion, denn die ist hier nun einmal öffentlich) ... das hat im Übrigen nichts damit zu tun das ich mich für unfehlbar halte, sondern nur damit das es für Dich eine winzige Mühe wäre den Code zu posten und für mich eine Chance daraus was zu ersehen ... ich habe hier nur nicht ständig Lust darum zu betteln minimale Unterstützung dafür zu bekommen FÜR ANDERE Probleme KOSTENLOS zu lösen ... schreib mir gerne eine PN, ich mache das Ganze nämlich auch beruflich und für meinen dort üblichen Stundensatz lasse ich mir dann ziemlich viel gefallen, denn der Kunde ist König, nur was ich mir in meiner Freizeit gefallen lasse bestimme ich lieber selbst.


in diesem Sinne

Gruß
Stephan
Philipp_19
****
Beiträge: 115
Registriert: Mo, 29.08.2011 09:01
Wohnort: Duisburg

Re: Start eines Makros

Beitrag von Philipp_19 »

Grüße,

Ich habe dir oben meinen Code gezeigt, ich wüsste nicht was es da noch zu "meckern" gibt. Welches andere Makro ich damit öffne, sollte in dem Fall von keinem großen Belang sein, denke ich.

Mein Hinweis auf die Reproduzierbarkeit hat etwas mit unserer Schnittstelle zu OOo/Word zu tun. Ich denke das sich da unsere Software zu jeder anderen unterscheidet, weswegen ich nicht verstehe, was du daran bemängelst.
Stephan hat geschrieben:Keine Ahnung wie das unter den KONKRETEN Umständen gehen soll da Du doch selbst schreibst (oder habe ich das mißverstanden?) das eine Messagebox den Start des Makros triggert (auch ohne das ich schon wüßte warum es dazu kommt das eine Messgabox das bewirkt).
Genau das wüsste ich ja auch gerne. Es war eine Vermutung meiner Seits, die ich gerne erläutern würde.
Wie ich darauf komme ist nicht weit hergeholt. Das obrige Makro ist in einer Vorlage gespeichert. Dieses startet ohne die MessageBox als ersten Befehl nicht, da Makros aus Vorlagen heraus nicht lauffähig sind. Dies hat mir Komma4 bereits zu großen Teilen bestätigt (ich weiß nicht, wie tief er das getestet hat).
Die vorgeschobene Message Box bewirkt allem Anschein nach, dass das Makro lauffähig ist. Wieso würde ich hier gerne mit euch erörtern, da dies für meine Arbeit durchaus wichtig ist.
Durch die Message Box wird aber das Makro angestoßen. Meine bisherigen Vermutungen waren eben, dass das Makro dann erkennt, das aus der Vorlage nun ein Dokument erzeugt wurde, und in Dokumenten kann man ein Makro nunmal laufen lassen.
Stephan hat geschrieben:Das er in der konkreten Situation verfügbar ist. Du selbst sprachst doch von ThisComponent.refresh() und für ThisComponent funktioniert .refresh() nun einmal nur in bestimmten Situationen, da ThisComponent verschiedene Dinge repräsentieren kann. Zwar sollte in solchen Situationen ein ThisComponent.refresh() eine FEhlermeldung liefern, aber wir sind hier auf Fehlersuche und da ist die Kenntnis der konkreten Verfügbarkeit zunächst hilfreich um Probleme auszuschließen oder eine Ansatz zu finden.
Ich bekomme keine Fehlermeldung angezeigt, die Verfügbarkeit werde ich schnellst möglichst testen.
Stephan hat geschrieben:(warum wird dann überhaupt gefragt wenn man selbst die Antwort schon kennt)
Ich kenne die Lösung nicht, habe deshalb hier nachgefragt.
Stephan hat geschrieben:oder das man Code nicht posten könne weil der geheim wäre
Der Code steht oben zur Verfügung...
Stephan hat geschrieben:das hat im Übrigen nichts damit zu tun das ich mich für unfehlbar halte
Hat auch niemand behauptet, und bin ich schon froh, das du dich hiermit auseinander setzt. Ich glaube, dass du hier mit einer der wenigen bist, der mir die Problematik aufzeigen kann, da ich glaube, dass das ganze nicht sehr einfach zu erklären ist.

Ich hoffe du versuchst weiterhin, mit mir das Problem zu lösen.
Windows XP, OOo 3.3.0
oder
Windows 7, OOo 3.3.0
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Start eines Makros

Beitrag von DPunch »

Aloha

Wie genau / wann / von wo startet das Makro?
Wo ist die Prozedur "Start"? In der Vorlage?

Wenn Du das Makro startest und die Messagebox siehst und dann in die Basic-IDE gehst, leuchtet oben in der Symbolleiste neben dem "Run"-Pfeil möglicherweise das rote "Stop"-Symbol (=Zeichen, dass ein Makro läuft)?

Aller Wahrscheinlichkeit nach wird mit thisComponent noch die Vorlage selber referenziert und das Makro läuft wie es soll, nur ändert sich in Zelle 0,1 nichts in der Vorlage.

Kannst Du ganz einfach testen, indem Du kurz Deine Prozedur so umbaust:

Code: Alles auswählen

Sub Start(doc)
       [b]MsgBox ("Report wurde erfolgreich generiert.", 64, "Report")[/b]
   Dim b as String
   'Dim doc as Object <- auskommentieren
   
   'doc = ThisComponent <- auskommentieren
und der Prozedur das Dokumentmodel mitgibst, je nachdem, wie Du Dein Dokument lädst bzw. von wo und wie "Start" aufgerufen wird.
Oder aber in der Vorlage mal was in die Zelle reinschreibst, nachdem Du das Makro angestossen hast.

Ganz abgesehen davon dass ich
Philipp_19 hat geschrieben:Das obrige Makro ist in einer Vorlage gespeichert. Dieses startet ohne die MessageBox als ersten Befehl nicht, da Makros aus Vorlagen heraus nicht lauffähig sind.
nicht bestätigen kann, ich kann problemlos mit dem Ereignis "Neues Dokument" in aus Vorlagen erzeugten Dokumenten Makros ausführen, ob nun durch Öffnen über die GUI oder durch Öffnen per Makro - allerdings unter Win XP, OOo 3.2.1.
Ob sich da in späteren Versionen was geändert hat, keine Ahnung.


Dass in einem Makro nur Messagboxen abgearbeitet werden, halte ich persönlich jedenfalls schlichtweg für ausgeschlossen, dass ein Makro durch eine Messagebox überhaupt erst getriggert wird, für vollkommen absurd, da in diesem Moment das Makro ja schon laufen muss.
Ich bleibe bei meiner Vermutung, dass das Makro stinknormal läuft (sonst würdest Du entweder keine Messagbox oder eine Fehlermeldung sehen), allerdings im falschen Dokument.
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Start eines Makros

Beitrag von Stephan »

Ich denke das sich da unsere Software zu jeder anderen unterscheidet, weswegen ich nicht verstehe, was du daran bemängelst.
ich 'bemängele' das Du hier fragst, gleichzeitig aber glaubst dir selbst die Antwort geben zu können weil Du bestimmte Dinge als Fehlerursache ausschließt.
Bitte verstehe dabei schlichtweg das ich mich nicht zu Dingen qualifiziert äußern kann wo mir Informationen vorenthalten werden und ich mangels Kenntnis diesser Informationen auch nicht weiß ob sie mit dem Problem etwas zu tun haben oder nicht.
Genau das wüsste ich ja auch gerne. Es war eine Vermutung meiner Seits, die ich gerne erläutern würde.
Wie ich darauf komme ist nicht weit hergeholt. Das obrige Makro ist in einer Vorlage gespeichert. Dieses startet ohne die MessageBox als ersten Befehl nicht, da Makros aus Vorlagen heraus nicht lauffähig sind. Dies hat mir Komma4 bereits zu großen Teilen bestätigt (ich weiß nicht, wie tief er das getestet hat).
Die vorgeschobene Message Box bewirkt allem Anschein nach, dass das Makro lauffähig ist. Wieso würde ich hier gerne mit euch erörtern, da dies für meine Arbeit durchaus wichtig ist.
Durch die Message Box wird aber das Makro angestoßen. Meine bisherigen Vermutungen waren eben, dass das Makro dann erkennt, das aus der Vorlage nun ein Dokument erzeugt wurde, und in Dokumenten kann man ein Makro nunmal laufen lassen.
Mein Gott, wir reden hier über elementare Logik oder ich verstehe das ganze Thema nicht - Du selbst hast behauptet das das Makro nur dann funktioniert wenn vorne im Makro eine MsgBox steht, WENN das aber stimmt ist Deine Bemerkung:
Dieses Makro startet nicht. Ich habe es mit einigen MessageBoxen rausgefunden
logisch falsch, denn Du kannst DANN höchstens herausgefunden haben das das Makro mit Msgbox läuft, jedoch nicht ob es nicht ohne Msgbox vielleicht auch läuft und nur keine (sichtbare) Aktion ausführt - beide Dinge sind jedoch ein ziemlicher Unterschied, nicht nur prinzipiell sondern im Konkreten weil es ja hier genau darum geht die Ursache zu finden warum ein Makro nicht läuft.
Der Code steht oben zur Verfügung...
Entschuldigung, nur der obige Code enthält ja nicht einmal die von Dir bereits als problematisch benannte Passage:

Code: Alles auswählen

ThisComponent.refresh()
wie also sollte ich annehmen das er vollständig wäre?



Gruß
Stephan
Philipp_19
****
Beiträge: 115
Registriert: Mo, 29.08.2011 09:01
Wohnort: Duisburg

Re: Start eines Makros

Beitrag von Philipp_19 »

Abend,

Ich versuche das Problem mal von Grund an neu aufzurollen:
Wir haben in unserer Software eine Word/OOo Schnittstelle, über die wir Reports generieren. Diese brauchen eine Vorlage (.dot, .ott), aus denen die Reports dann generiert werden. Diese Vorlagen werden bei uns in die Datenbank gespeichert. Jeder Report bekommt über Textmarken Daten aus der DB mitgeteilt, die zu großen Teilen in Tabellen eingetragen werden.
So, nun habe ich Vorlagen, die Makros benötigen, da Kunden eben tolle Wünsche haben.
Meinen Tests zufolge ist es nicht möglich, Vorlagen (XP, OOo 3.3.0) mit Makros zu verknüpfen. Das habe ich gut und gerne 3 Wochen lang versucht über Hilfsmakros, alle Events und eben nun mit "belanglosem" Code.

Rufe ich diese Vorlagen nun aus der DB heraus auf, wird das Dokument generiert, die Textmarken mit dem DB-Inhalt gefüllt, aber die Makros laufen nicht.
ABER, und genau das lässt mich zu meiner Annahme kommen, starten manche Makros eben doch. Makros mit MsgBoxen.

Ich glaube auch nicht wirklich, das diese Boxen das Makro triggern. Das habe ich nie behauptet, bzw. nie so ausgedrückt: Ich habe lediglich gesagt, das Makros mit MsgBoxen laufen, Makros, die keine haben, nicht.
Das habe ich vorhin auch nochmals getestet, indem ich einem Makro OHNE diesen Elementen eine hinzugefügt habe, und siehe da, das Makro springt an.
DPunch hat geschrieben:Aller Wahrscheinlichkeit nach wird mit thisComponent noch die Vorlage selber referenziert und das Makro läuft wie es soll, nur ändert sich in Zelle 0,1 nichts in der Vorlage.
Dies ist ausgeschlossen, da ich die Zelle über eine Textmarke (s.o.) befülle, und dies genau beobachtet habe.
DPunch hat geschrieben:Ob sich da in späteren Versionen was geändert hat, keine Ahnung.
Diese Annahme hatte komma4 auch zunächst mit einer alten Vorlage, konnte mein Problem aber mit der Version 3.3.0 nachvollziehen.
DPunch hat geschrieben:Ich bleibe bei meiner Vermutung, dass das Makro stinknormal läuft (sonst würdest Du entweder keine Messagbox oder eine Fehlermeldung sehen), allerdings im falschen Dokument.
Halte ich durchaus für möglich, aber wieso laufen die Makros mit den MsgBoxen dann im gegensatz zu denen ohne eine? Das finde ich an der Sache sehr verwirrend und fragwürdig.
Stephan hat geschrieben:und nur keine (sichtbare) Aktion ausführt
Das Makro, was ich über "Call Makroname" aufrufe, verändert Großteile des Dokumentes. Es nimmt keinerlei Änderungen vor, die nicht sichtbar sind.
Zudem schließt sich dieses Problem auch aus, da die Makros mit der MsgBox normal funktionieren. Was sollte eine MsgBox also für Veränderungen bewirken, die meinem Makro plötzlich nicht sichtbare Aktionen entlockt?
Stephan hat geschrieben:wie also sollte ich annehmen das er vollständig wäre?
Ich hatte den Code gepostet, mit dem das Makro lauffähig ist. Wahlweise kannst du einfach die MessageBox durch den von dir geposteten Code ersetzen.


Ich hab leider das zweite Makro nicht zur Verfügung stehen, kann es morgen aber sicherlich nachreichen.

Ich hatte das Problem mit einer etwas abgewandelten Form des Makros oben nachstellen wollen:
Solange die Zelle, auf die ich prüfe, leer ist, wird in einer zusätzlichen Zelle immer eine Zahl oder ein Buchstabe angehangen. Nachdem Aufruf der Vorlage, hat das Makro erst gegriffen, nachdem ich, siehe Anfangspost, eine scheinbar belanglose Aktion durchgeführt habe (Menü angeklickt, Dokument verkleinert/vergrößert).
Dies ließ mich zu der Annahme kommen, dass die Makros dann starten, wenn die Vorlage/das Dokument einmal refresht werden. Dannach wuchs die Zelle mit den Zahlen bis ins "unendliche". Habe ich der abgefragten Zelle dann einen Wert gegeben, sprang mein zweites Makro über den Call-Aufruf an und das Dokument war so, wie es der Kunde/ich haben wollte.
Dies ließ mich zu der Annahme kommen, dass die Makros dann starten, wenn die Vorlage/das Dokument einmal refresht werden.
Ich überlege grade, ob vielleicht sowas ähnliches der Fall mit der MsgBox ist. Das die MsgBox sowas wie einen refresh bewirkt (wenn ich da richtig denke) und dadurch das Makro angeworfen wird.

So, ich hoffe das Problem wurde nun offenkundiger für euch, ich werde, dafür entschuldige ich mich natürlich, morgen die entsprechenden Dokumente/Vorlagen + Makros nachliefern (vereinfacht und anonymisiert).

Grüße
Windows XP, OOo 3.3.0
oder
Windows 7, OOo 3.3.0
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Start eines Makros

Beitrag von DPunch »

Aloha
Philipp_19 hat geschrieben:Ich glaube auch nicht wirklich, das diese Boxen das Makro triggern. Das habe ich nie behauptet, bzw. nie so ausgedrückt: Ich habe lediglich gesagt, das Makros mit MsgBoxen laufen, Makros, die keine haben, nicht.
Das ist im Endeffekt das gleiche und ich halte es immer noch für genauso absurd.
Philipp_19 hat geschrieben:Rufe ich diese Vorlagen nun aus der DB heraus auf, wird das Dokument generiert
Ok, wenn Du die Dokumente generierst und per Code öffnest, warum gehst Du dann nicht den einfachsten, logischsten Weg?

Code: Alles auswählen

(...)
newDoc = StarDesktop.loadComponent...
Start(newDoc)
(...)
+

Code: Alles auswählen

Sub Start (Doc)
(...)
Philipp_19 hat geschrieben:Diese Annahme hatte komma4 auch zunächst mit einer alten Vorlage, konnte mein Problem aber mit der Version 3.3.0 nachvollziehen.
Probiere bitte, ob angehängte Datei unter 3.3 funktioniert.
Philipp_19 hat geschrieben:aber wieso laufen die Makros mit den MsgBoxen dann im gegensatz zu denen ohne eine? Das finde ich an der Sache sehr verwirrend und fragwürdig.
Ich halte diese Annahme für um einiges fragwürdiger.
Philipp_19 hat geschrieben:Nachdem Aufruf der Vorlage, hat das Makro erst gegriffen, nachdem ich, siehe Anfangspost, eine scheinbar belanglose Aktion durchgeführt habe (Menü angeklickt, Dokument verkleinert/vergrößert).
Hast Du mal versucht, das geöffnete Dokument schlicht in den Vordergrund zu stellen, per Makro oder auch anders?

Ansonsten bin ich mal gespannt auf Deine Beispieldateien.
Dateianhänge
Vorlage_Event.ott
(9.75 KiB) 100-mal heruntergeladen
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Start eines Makros

Beitrag von Stephan »

Meinen Tests zufolge ist es nicht möglich, Vorlagen (XP, OOo 3.3.0) mit Makros zu verknüpfen. Das habe ich gut und gerne 3 Wochen lang versucht über Hilfsmakros, alle Events und eben nun mit "belanglosem" Code.
Tut mir echt leid, auch wenn Du es 3 Monate versucht hättest bleibt die Aussage unwahr.

Das Du Dich hier beharrlich weigerst Code zu posten dürfte dabei das Hauptproblem sein, denn ich beginne nun zu ahnen das Deine Makros aus der Vorlage nur deshalb nicht laufen weil Du beim Öffnen nicht den Parameter 'MacroExecutionMode' angibst - gefühlt hundertfach hier im Forum behandelt, und dankenswerter WEise auch von DPunch in der Beispieldatei wiedergegeben.

Falls dieser Parameter das gesamte Problem ist, herzlichen Dank das wir für diese Bagatelle unsere Zeit verschwenden durften, nur weil man Dir jeden Hinweis bzw. jede Bitte den Code zu posten aus der Nase ziehen muß.
Besonders 'erfrischend' auch angesichts der Tatsache das ich hier dann meine Freizeit vertue, damit Du damit bei Deinem Kunden Geld verdienst ... t o l l (nee ich helfe auch gerne einem Kollegen Geld zu verdienen, nur eben nicht wenn ich um Informationen, die ich zum Helfen brauche, betteln muß).

Ich habe lediglich gesagt, das Makros mit MsgBoxen laufen
und das habe ich hier mit "triggern" benannt



ich habe fertig


Stephan
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Start eines Makros

Beitrag von komma4 »

Philipp_19 hat geschrieben:Diese Annahme hatte komma4 auch zunächst mit einer alten Vorlage, konnte mein Problem aber mit der Version 3.3.0 nachvollziehen.
Das kann nicht sein: habe und hatte nie eine 3.3.0er Version. Habe zwar LO 3.3.1.2 auf der Platte - mache damit aber praktisch nichts (jedenfalls keine Tests)
Und ich schrieb: mit Dokument öffnen funktioniert die Ereignissteuerung nicht; das ist <> Neues Dokument
viewtopic.php?f=18&t=50102#p184888
DPunch hat geschrieben:Probiere bitte, ob angehängte Datei unter 3.3 funktioniert.
Also: unter OOo 3.2.1 und LO 3.4.3 funktioniert das Makro-Starten beim Ereignis "Neues Dokument"
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)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Start eines Makros

Beitrag von balu »

Hallo DPunch,

nur zur Info.
Deine Beispieldatei unter WinXP mit OOo 3.3.0 (selbst erstellte Portable) geöffnet und nach Bestätigung das Makro auszuführen (Sicherheitsabfrage), bekam ich sofort die Messagebox zu sehen.
Messagebox hat geschrieben: Event: Neues Dokument - Titel: Unbenannt 1
Nach klick auf OK und dann auf den Button kam die nächste Messagebox.
Messagebox hat geschrieben: Dokument noch nicht gespeichert

Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Philipp_19
****
Beiträge: 115
Registriert: Mo, 29.08.2011 09:01
Wohnort: Duisburg

Re: Start eines Makros

Beitrag von Philipp_19 »

Ich frage mich, wieso ihr so felsenfest davon überzeugt seid, dass meine Beobachtungen nicht der Wahrheit entsprechen. Ich habe lange und ausgiebig diese Problem beobachtet und versucht zu lösen, und nun stolpere ich über eine Möglichkeit, wie mein Problem behoben werden kann, und dennoch akzeptiert ihr es nicht.
DPunch hat geschrieben:Ok, wenn Du die Dokumente generierst und per Code öffnest, warum gehst Du dann nicht den einfachsten, logischsten Weg?
Ich verstehe nicht, wieso mir das weiter helfen sollte? Unsere Schnittstelle erzeugt aus den Vorlagen in der Datenbank neue Dokumente.
DPunch hat geschrieben:Ich halte diese Annahme für um einiges fragwürdiger.
Siehe oben. Es ist meine Beobachtung und ich hinterfrage diese. Wieso du mir sagst, dass das ja garnicht sein kann, kann ich beim besten Willen nicht nachvollziehen.
DPunch hat geschrieben:Hast Du mal versucht, das geöffnete Dokument schlicht in den Vordergrund zu stellen, per Makro oder auch anders?
Die erstellten Dokumente sind automatisch im Vordergrund und als aktuelles Fenster ausgewählt.
Das Beispiel werde ich nachher anschauen, kann aber das Szenario erst morgen früh nachstellen.
Stephan hat geschrieben:Das Du Dich hier beharrlich weigerst Code zu posten dürfte dabei das Hauptproblem sein
Ich will dir nichts böses, aber hast du meinen letzten Post überhaupt gelesen? Ich hab euch gesagt, das entsprechender Code und Beispieldateien morgen folgen, da ich momentan keinen Zugriff darauf habe.....auf mehr von dir gehe ich nicht mehr ein.
komma4 hat geschrieben:Das kann nicht sein: habe und hatte nie eine 3.3.0er Version.
Dann hatte ich das wohl falsch im Kopf, entschuldige. Ich erinnere mich aber an den Satz von dir, dass du deine Aussage zurückziehen musstest, da du mit einer alten Vorlage meine Behauptung nicht wiederlegen konntest.


Edit: @ DPunch:
Deine Beispieldatei beschreibt genau das Verhalten, was ich euch aufzeige: Vorlagen, in denen ein Makro mit einer MessageBox vorhanden sind, werden ohne Probleme ausgeführt. Mein Fragestellung bezieht sich genau auf den anderen Fall: Wenn keine MessageBox vorhanden ist, wird das Makro nicht angestoßen.
Windows XP, OOo 3.3.0
oder
Windows 7, OOo 3.3.0
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Start eines Makros

Beitrag von komma4 »

Philipp_19 hat geschrieben:dass meine Beobachtungen nicht der Wahrheit entsprechen.
[...]
Dann hatte ich das wohl falsch im Kopf, entschuldige.
Ebend!

Neben der falschen Versionsnummer war es ein anderes Ereignis.

Aber ich weiss: Klug fragen ist schwerer als klug antworten
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)
Antworten