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

Antwort per Email an