Start eines Makros
Moderator: Moderatoren
-
- ****
- Beiträge: 115
- Registriert: Mo, 29.08.2011 09:01
- Wohnort: Duisburg
Start eines Makros
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
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
oder
Windows 7, OOo 3.3.0
-
- ****
- Beiträge: 115
- Registriert: Mo, 29.08.2011 09:01
- Wohnort: Duisburg
Re: Start eines Makros
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
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
oder
Windows 7, OOo 3.3.0
Re: Start eines Makros
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.Setze ich direkt nach der Zeile Sub Makroname eine MessageBox, startet das Makro sofort, ohne zu meckern.
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.Jeder andere Befehl hingegen wird übergangen
In einer Situation wo er VERFÜGBAR ist? Das möchte ich stark bezweifeln.Auch ein ThisComponent.refresh() wird einfach nicht genommen.
Hast Du überhaupt geprüft (z.B. mit .dbg_methods) ob .refresh() verfügbar ist?
Wie soll man das beantworten ohne das konkrete Makro und die Art des Startens zu kennen?Warum wird die MessageBox sofort akzeptiert und ausgeworfen, bzw. warum startet das Makro sofort?
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.
Keine Ahnung was uns das im Konkreten sagen soll, ein Posten von Code sollte immer möglich sein.Entschuldigt das es keine Beispieldatei gibt, aber die Vorlagen werden über eine Software aufgerufen, Textmarken aus einer Datenbank heraus gefüllt und so weiter.
Gruß
Stephan
-
- ****
- Beiträge: 115
- Registriert: Mo, 29.08.2011 09:01
- Wohnort: Duisburg
Re: Start eines Makros
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
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.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.
Dieses Makro startet nicht. Ich habe es mit einigen MessageBoxen rausgefunden, weil ich wissen wollte wo es noch läuft.
Das musst du mir erklären. Was meinst du mit verfügbar?Stephan hat geschrieben:In einer Situation wo er VERFÜGBAR ist? Das möchte ich stark bezweifeln.
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 benutztStephan hat geschrieben:Keine Ahnung was uns das im Konkreten sagen soll, ein Posten von Code sollte immer möglich sein.

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
oder
Windows 7, OOo 3.3.0
Re: Start eines Makros
'Interassant', sagt mir zwar nichts aber ich nehme das mal so zur Kenntnis.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.
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).Dieses Makro startet nicht. Ich habe es mit einigen MessageBoxen rausgefunden,
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.Was meinst du mit verfügbar?
Ich hatte ja bereits geraten einfach die aktuell verfügbaren Methoden anzeigen zu lassen.
Ich weiß leider nicht wie Du darauf kommst.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.
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
-
- ****
- Beiträge: 115
- Registriert: Mo, 29.08.2011 09:01
- Wohnort: Duisburg
Re: Start eines Makros
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.
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.
Ich hoffe du versuchst weiterhin, mit mir das Problem zu lösen.
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.
Genau das wüsste ich ja auch gerne. Es war eine Vermutung meiner Seits, die ich gerne erläutern würde.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).
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.
Ich bekomme keine Fehlermeldung angezeigt, die Verfügbarkeit werde ich schnellst möglichst testen.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 kenne die Lösung nicht, habe deshalb hier nachgefragt.Stephan hat geschrieben:(warum wird dann überhaupt gefragt wenn man selbst die Antwort schon kennt)
Der Code steht oben zur Verfügung...Stephan hat geschrieben:oder das man Code nicht posten könne weil der geheim wäre
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.Stephan hat geschrieben:das hat im Übrigen nichts damit zu tun das ich mich für unfehlbar halte
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
oder
Windows 7, OOo 3.3.0
Re: Start eines Makros
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:
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
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.
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
Oder aber in der Vorlage mal was in die Zelle reinschreibst, nachdem Du das Makro angestossen hast.
Ganz abgesehen davon dass ich
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.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.
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.
Re: Start eines Makros
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.Ich denke das sich da unsere Software zu jeder anderen unterscheidet, weswegen ich nicht verstehe, was du daran bemängelst.
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.
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: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.
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.Dieses Makro startet nicht. Ich habe es mit einigen MessageBoxen rausgefunden
Entschuldigung, nur der obige Code enthält ja nicht einmal die von Dir bereits als problematisch benannte Passage:Der Code steht oben zur Verfügung...
Code: Alles auswählen
ThisComponent.refresh()
Gruß
Stephan
-
- ****
- Beiträge: 115
- Registriert: Mo, 29.08.2011 09:01
- Wohnort: Duisburg
Re: Start eines Makros
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.
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?
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.
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
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.
Dies ist ausgeschlossen, da ich die Zelle über eine Textmarke (s.o.) befülle, und dies genau beobachtet habe.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.
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:Ob sich da in späteren Versionen was geändert hat, keine Ahnung.
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.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.
Das Makro, was ich über "Call Makroname" aufrufe, verändert Großteile des Dokumentes. Es nimmt keinerlei Änderungen vor, die nicht sichtbar sind.Stephan hat geschrieben:und nur keine (sichtbare) Aktion ausführt
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?
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.Stephan hat geschrieben:wie also sollte ich annehmen das er vollständig wäre?
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.
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.Dies ließ mich zu der Annahme kommen, dass die Makros dann starten, wenn die Vorlage/das Dokument einmal refresht werden.
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
oder
Windows 7, OOo 3.3.0
Re: Start eines Makros
Aloha
+
Ansonsten bin ich mal gespannt auf Deine Beispieldateien.
Das ist im Endeffekt das gleiche und ich halte es immer noch für genauso absurd.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.
Ok, wenn Du die Dokumente generierst und per Code öffnest, warum gehst Du dann nicht den einfachsten, logischsten Weg?Philipp_19 hat geschrieben:Rufe ich diese Vorlagen nun aus der DB heraus auf, wird das Dokument generiert
Code: Alles auswählen
(...)
newDoc = StarDesktop.loadComponent...
Start(newDoc)
(...)
Code: Alles auswählen
Sub Start (Doc)
(...)
Probiere bitte, ob angehängte Datei unter 3.3 funktioniert.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.
Ich halte diese Annahme für um einiges fragwürdiger.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.
Hast Du mal versucht, das geöffnete Dokument schlicht in den Vordergrund zu stellen, per Makro oder auch anders?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).
Ansonsten bin ich mal gespannt auf Deine Beispieldateien.
- Dateianhänge
-
- Vorlage_Event.ott
- (9.75 KiB) 100-mal heruntergeladen
Re: Start eines Makros
Tut mir echt leid, auch wenn Du es 3 Monate versucht hättest bleibt die Aussage unwahr.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.
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ß).
und das habe ich hier mit "triggern" benanntIch habe lediglich gesagt, das Makros mit MsgBoxen laufen
ich habe fertig
Stephan
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Start eines Makros
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)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.
Und ich schrieb: mit Dokument öffnen funktioniert die Ereignissteuerung nicht; das ist <> Neues Dokument
viewtopic.php?f=18&t=50102#p184888
Also: unter OOo 3.2.1 und LO 3.4.3 funktioniert das Makro-Starten beim Ereignis "Neues Dokument"DPunch hat geschrieben:Probiere bitte, ob angehängte Datei unter 3.3 funktioniert.
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: Start eines Makros
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.
Gruß
balu
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.
Nach klick auf OK und dann auf den Button kam die nächste Messagebox.Messagebox hat geschrieben: Event: Neues Dokument - Titel: Unbenannt 1
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
wehr rächtschraipfähler findet khan si behalden

-
- ****
- Beiträge: 115
- Registriert: Mo, 29.08.2011 09:01
- Wohnort: Duisburg
Re: Start eines Makros
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.
Das Beispiel werde ich nachher anschauen, kann aber das Szenario erst morgen früh nachstellen.
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.
Ich verstehe nicht, wieso mir das weiter helfen sollte? Unsere Schnittstelle erzeugt aus den Vorlagen in der Datenbank neue Dokumente.DPunch hat geschrieben:Ok, wenn Du die Dokumente generierst und per Code öffnest, warum gehst Du dann nicht den einfachsten, logischsten Weg?
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:Ich halte diese Annahme für um einiges fragwürdiger.
Die erstellten Dokumente sind automatisch im Vordergrund und als aktuelles Fenster ausgewählt.DPunch hat geschrieben:Hast Du mal versucht, das geöffnete Dokument schlicht in den Vordergrund zu stellen, per Makro oder auch anders?
Das Beispiel werde ich nachher anschauen, kann aber das Szenario erst morgen früh nachstellen.
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.Stephan hat geschrieben:Das Du Dich hier beharrlich weigerst Code zu posten dürfte dabei das Hauptproblem sein
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.komma4 hat geschrieben:Das kann nicht sein: habe und hatte nie eine 3.3.0er Version.
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
oder
Windows 7, OOo 3.3.0
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Start eines Makros
Ebend!Philipp_19 hat geschrieben:dass meine Beobachtungen nicht der Wahrheit entsprechen.
[...]
Dann hatte ich das wohl falsch im Kopf, entschuldige.
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)
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)