Wie Pivot-Tabellen automatisch aktualisieren?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Wie Pivot-Tabellen automatisch aktualisieren?

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » So, 19.04.2015 14:55

mikeleb hat geschrieben:.....
Mit folgender Änderung......
hat es nun geklappt! :-D

Herzlichen Dank für deine Bemühungen! 8)

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von mikeleb » So, 19.04.2015 10:35

Hallo,

interessanterweise wird das Makro zu schnell abgearbeitet. Nach der Änderung eines Zellinhaltes startet das Makro und schaltet erst einmal die automatische Neuberechnung aus. Damit werden die Pivottabellen mit den "alten" Werten aktualisiert.
Mit folgender Änderung wird zunächst eine Neuberechnung ausgelöst und erst dann werden die Pivottabellen aktualisiert.
Da du keine Datenbereiche definiert hast kann der Teil auskommentiert werden.

Code: Alles auswählen

Sub refresh_DBRanges_And_Pilots

REM disable auto-calculation:
bAutoCalc = thisComponent.IsAutomaticCalculationEnabled
thisComponent.enableAutomaticCalculation(False)
REM re-calculation:
thiscomponent.calculateall()
REM refresh DatabaseRanges
'oDBRangesEnum = thisComponent.DatabaseRanges.createEnumeration()
'refresh_Enumeration(oDBRangesEnum)
REM refreh pilots
oSheetsEnum = thisComponent.Sheets.createEnumeration()
refresh_All_DataPilots(oSheetsEnum)

REM reset auto-calculation to previous state:
thisComponent.enableAutomaticCalculation(bAutoCalc)

End Sub

Sub refresh_All_DataPilots(oSheetsEnum)

REM Bug: Disregards pilots created from datasource:
while oSheetsEnum.hasMoreElements()
oSheet = oSheetsEnum.nextElement()
oDPEnum = oSheet.DataPilotTables.createEnumeration()
refresh_Enumeration(oDPEnum)
wend

End Sub

Sub refresh_Enumeration(oEnum)

while oEnum.hasMoreElements()
oNext = oEnum.nextElement()
oNext.refresh()
wend

End Sub 

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » Sa, 18.04.2015 14:38

mikeleb hat geschrieben:Hallo,

kannst du uns deine Datei (ggf. verfremdet) per Anhang zur Verfügung stellen, um nach dem Fehler zu suchen?
Ich habe dir eine PN gesandt! :)

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von mikeleb » Sa, 18.04.2015 14:06

Hallo,

kannst du uns deine Datei (ggf. verfremdet) per Anhang zur Verfügung stellen, um nach dem Fehler zu suchen?

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » Sa, 18.04.2015 13:20

mikeleb hat geschrieben:Hallo,

ich vermute mal, die Makrozuordnung stimmt nicht.
Dem Tabellenereignis "Inhalt geändert" (Rechtsklick auf den Tab->Tabellenereignisse) muss das Makro "refresh_DBRanges_And_Pilots" zugeordnet werden.
Ich habe jetzt alle Varianten mit der Makro-Zuordnung durch - entweder es passiert gar nichts, oder der o.a. Fehler tritt auf..... :?

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von mikeleb » Do, 16.04.2015 18:05

Hallo,

ich vermute mal, die Makrozuordnung stimmt nicht.
Dem Tabellenereignis "Inhalt geändert" (Rechtsklick auf den Tab->Tabellenereignisse) muss das Makro "refresh_DBRanges_And_Pilots" zugeordnet werden.

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » Do, 16.04.2015 16:21

OK - das mit den Tabellenereignissen habe ich jetzt mal, aber das Makro hat noch irgend ewtas, denn ich bekomme folgenden Fehler:

BASIC-Laufzeitfehler
Eigenschaft oder Methode nicht gefunden: hasMoreElements



Das ist der Teil in dem der Fehler entsteht:

Sub refresh_Enumeration(oEnum)

while oEnum.hasMoreElements()
oNext = oEnum.nextElement()
oNext.refresh()
wend

End Sub

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » Do, 16.04.2015 16:07

mikeleb hat geschrieben:Hallo,
OK - ich habe es nur ans Calc-File direkt angehängt
und auch mit dem entsprechenden Tabellenereignis ("Inhalt geändert") verknüpft?
:o Das wusste ich leider nicht (siehe mein Hinweis im Eröffnungs-Posting, dass ich eben bei Pivot + Makro ein Rookie bin)!

Also, ich habe den ganzen "Refresh-Zirkus" unter "Makro verwalten" -> "OpenOffice Basic Makros" -> "MyCalcFile.ods" -> "Standard" -> "OwnBasicRefreshes" abgespeichert.

Vorhandene Makros darin sind: "refresh_DBRanges_And_Pilots", "refresh_All_DataPilots(oSheetsEnum)" und "refresh_Enumeration(oEnum)".

Klicke ich jetzt auf "ZUORDNEN", finde ich kein Tabellenereignis ("Inhalt geändert") - nur "'Geändert'-Status wurde geändert" ist vorhanden!?

Bin ich da richtig und muss ich da alle 3 Makros einzeln zuordnen?

Ich habe schon gesucht, um mehr über Tabellenereignisse in OO-Calc zu finden, aber Google spuckt mit den Suchbegriffen "Tabellenereignis open office calc wie zuordnen" magere 2 Seiten aus.... :?

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von mikeleb » Do, 16.04.2015 14:06

Hallo,
OK - ich habe es nur ans Calc-File direkt angehängt
und auch mit dem entsprechenden Tabellenereignis ("Inhalt geändert") verknüpft?

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » Do, 16.04.2015 11:35

Stephan hat geschrieben:
soll ich das Makro direkt an mein File binden oder wäre es besser, das Ganze generell, für alle OO-Calcs, einzurichten?
Die "generelle Lösung" wäre mir erheblich sympathischer


technisch geht Beides.

Ich persönlich würde von der generellen Variante deshalb absehen weil es immer mal wieder Probleme geben kann die es erfordern Änderungen an den globalen Programmeinstellungen zu machen und dadurch auch mal Makrozuweisungen ungewollt verloren gehen, außerdem ist es nervig wenn bestimmte Makroabläufe Dich in jeder Datei für (sinngemäß) 1 Sekunde ausbremsen wenn sie doch nur in manchen Dateien gebraucht werden.


Gruß
Stephan
OK - ich habe es nur ans Calc-File direkt angehängt und ich sehe beim Öffnen des Files kurz in der Statusleiste aufblitzen, dass Berechnungen durchgeführt werden - im Tabellenblatt mit der Pivot-Tabelle sind die Änderungen aber weiterhin erst ersichtlich, wenn ich manuell aktualisiere! :shock:

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von Stephan » Do, 16.04.2015 11:19

soll ich das Makro direkt an mein File binden oder wäre es besser, das Ganze generell, für alle OO-Calcs, einzurichten?
Die "generelle Lösung" wäre mir erheblich sympathischer


technisch geht Beides.

Ich persönlich würde von der generellen Variante deshalb absehen weil es immer mal wieder Probleme geben kann die es erfordern Änderungen an den globalen Programmeinstellungen zu machen und dadurch auch mal Makrozuweisungen ungewollt verloren gehen, außerdem ist es nervig wenn bestimmte Makroabläufe Dich in jeder Datei für (sinngemäß) 1 Sekunde ausbremsen wenn sie doch nur in manchen Dateien gebraucht werden.


Gruß
Stephan

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » Do, 16.04.2015 11:11

Stephan hat geschrieben:
aber so richtig scheinen die dort auch nicht zu einer Lösung gekommen zu sein, oder?
Mal ganz offen, meinst Du ich poste hier auf gut Glück irgendwelche Links? Im verlinkten Thread steht u.a.:

....

Gruß
Stephan
Sorry, ich wollte dir nicht zu nahe treten mit meiner Aussage - ich bezog mich auf das letzte Posting in dem Thread, worin geschrieben wird, dass der TO bei einer älteren OO-Version bleiben muss, weil die Lösung in neueren Versionen nicht funktioniert.
.... now it doest work...I have to stay at OO 3.2.1 because of this ability.
Is there any new way how to refresh PT in OO 3.3/FO3.3/FO3.4???

Btw. in OO 3.3 my PT totaly colabsed! they have lost they link to source area, it is not possible to edit their source area in their properties, the only way how to make PT work in OO 3.3 is to create whole new PT - but I will do this only if I decide to leave this world by painful way - which this is. What is wrong with PT in OO 3.3 that were created in OO 3.2. ?????...
Ich werde das jetzt selbst versuchen - soll ich das Makro direkt an mein File binden oder wäre es besser, das Ganze generell, für alle OO-Calcs, einzurichten?
Die "generelle Lösung" wäre mir erheblich sympathischer - aber spricht etwas dagegen, bzw. wo muss ich das Makro dafür hinzufügen?

Danke für die Unterstützung! 8)

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von Stephan » Do, 16.04.2015 10:36

aber so richtig scheinen die dort auch nicht zu einer Lösung gekommen zu sein, oder?
Mal ganz offen, meinst Du ich poste hier auf gut Glück irgendwelche Links? Im verlinkten Thread steht u.a.:

Refresh all database ranges and pilots:

REM ***** BASIC *****
Sub refresh_DBRanges_And_Pilots
REM disable auto-calculation:
bAutoCalc = thisComponent.IsAutomaticCalculationEnabled
thisComponent.enableAutomaticCalculation(False)
oDBRangesEnum = thisComponent.DatabaseRanges.createEnumeration()
refresh_Enumeration(oDBRangesEnum)
oSheetsEnum = thisComponent.Sheets.createEnumeration()
refresh_All_DataPilots(oSheetsEnum)
REM reset auto-calculation to previous state:
thisComponent.enableAutomaticCalculation(bAutoCalc)
End Sub
Sub refresh_All_DataPilots(oSheetsEnum)
REM Bug: Disregards pilots created from datasource
while oSheetsEnum.hasMoreElements()
oSheet = oSheetsEnum.nextElement()
oDPEnum = oSheet.DataPilotTables.createEnumeration()
refresh_Enumeration(oDPEnum)
wend
End Sub
Sub refresh_Enumeration(oEnum)
while oEnum.hasMoreElements()
oNext = oEnum.nextElement()
oNext.refresh()
wend
End Sub


Nachfragen sind natürlich willkommen, nur gleichzeitig bitte ich doch darum die Perspektive des Anderen zu sehen: ich sitze hier am Schreibtisch und gehe meiner regulären Arbeit (als Freiberufler) nach und habe nur die Zeit kurz zu antworten (z.B. mit einem Link) oder eben garnicht. Nur einen LInk zu setzen ist schon deshalb besser als nichts zu tun weil er anderen u.U. hilft Dir zu helfen, nämlich solchen Leuten die das Makro anpassen können, aber selbst noch nicht den LInk gefunden hatten.


Gruß
Stephan

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von TSRalex » Do, 16.04.2015 10:02

Danke für die Verlinkung zu diesem Fremd-Forum (die Idee, mit englischen Suchbegriffen zu arbeiten ist mir gar nicht gekommen *schäm* ), aber so richtig scheinen die dort auch nicht zu einer Lösung gekommen zu sein, oder?

Re: Wie Pivot-Tabellen automatisch aktualisieren?

von Stephan » Do, 16.04.2015 09:33


Nach oben