Hallo zusammen,
schaffe es leider nicht folgendes Problem zu lösen. Ich habe eine Tabelle
(als xls. gespeichert) mit mehreren Tabellenblättern (ca. 20). Auf diesen
sind ca. 6 Datenpilot-Tabellen verteilt. Zum aktualisieren muss ich nun
jedesmal die Tabellenblätter durchgehen und diese händisch aktualisieren.
Ich möchte gern ein Makro erzeugen, was auf meiner Sympolleiste liegt und
mit einem Klick alle Datenpilot-Tabellen aktualisiert.
Folgendes kommt mir komisch vor:
- Ich habe eine einfache Testdatei (ods.) angelegt. In beiden Dateien
kann ich über die Funktion "Makro aufzeichnen" kein Makro erstellen was die
Datenpilot-Tabelle aktualisiert. Ich habe versucht die Datenpilot-Tabelle
mit der Maus und mit dem Curser anzusteuern und im Menü
"Daten-Datenpilot-aktualisieren" ausgewählt. Andere Makros konnte ich ohne
Probleme aufzeichnen und ausführen.
- Ich habe in Internet/Foren nach fertigen Makros (bzw. Lösungen)
geschaut (da ich selbst keine Ahnung von der Programierung habe.) Dabei habe
ich untenstehendes Makro gefunden. Dieses funktioniert in meiner Testdatei
aber nicht in meiner eigentlichen Datei.
- Lass ich das Makro in meiner eigentlichen Datei laufen, "rechnert" er
zwar irgend etwas aktualisert die Tabelle aber nicht.
Noch ein Hinweis: Die Datei ist über die letzten 2-3 Jahre entstanden und
hat bereits ältere OOo Versionen gesehen. Ich habe sie immer als .xls
gespeichert gehabt. Ich habe Sie jetzt zum Test auch als ods. gespeichert.
Auch dann funktioniert untenstehendes Makro nicht.
Es würde mich sehr freuen, wenn jemand einen Tipp oder ein fertiges Makro
hat.
Flo
Mit flogendem Makro hab´s ich versucht:
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