Seite 1 von 1

Automatisches Update eines gesamten Dokumentes

Verfasst: Do, 23.02.2012 10:11
von zeeman78
Hallo,

Vielen Dank an alle fleißigen Helfer. Durch euch ist die Lernkurve bei mir extrem hoch.

Ich habe folgende Frage. Ich habe eine Base Datenbank und ein Calc-Dokument verknüpft. Hierbei habe ich ungefähr 20 Tabellenblätter nebeneinander, die alle auf unterschiedliche Abfragen verknüpft. Mithilfe des Markro-rekorders habe ich einen Makro erstellt, bei dem ich mit Knopfdruck jeweils das aktuelle Tabellenblatt aktualisieren kann. (siehe anbei) Dies ist bei 20 Blättern etwas mühselig.

sub Aktualisieren
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DataAreaRefresh", "", 0, Array())
end sub

Wie muss das Marko aussehen, wenn ich alle Tabellenblätter auf einmal aktualisieren möchte? Das müsste doch gehen oder?

Vielen dank im Voraus

Re: Automatisches Update eines gesamten Dokumentes

Verfasst: Do, 23.02.2012 10:37
von Karolus
Hallo
Wahrscheinlich so:

Code: Alles auswählen

Sub refresh_Databases
databaseranges = thiscomponent.DataBaseRanges()
for i = 0 to databaseranges.count()-1
databaseranges.getByIndex(i).refresh()
next i
End Sub


Karo

Re: Automatisches Update eines gesamten Dokumentes

Verfasst: Do, 23.02.2012 10:56
von zeeman78
Hallo Karo,

habe vielen Dank für die schnelle Hilfe.
Funktionniert super, Habe nochmals vielen Dank.

VBA mäßig stehe ich noch ganz am Anfang, darf ich daher bzgl. deines Markros ein paar Fragen stellen? Ich war überrascht, dass der Makro so kurz ist, daher mein Interesse

Sub refresh_Databases --> Name des Makros ist klar.

databaseranges = thiscomponent.DataBaseRanges() --> Was definierst du hier?

for i = 0 to databaseranges.count()-1 --> hier wird eine Schleife vorbereitet, die der Makro abarbeiten soll. Was bedeutet das .count()-1?

databaseranges.getByIndex(i).refresh()--> was definiert diese Zeile

next i --> Marko soll zum nächsten i gehen bis es durch ist, habe ich verstanden

End Sub

Hab vielen Dank im Voraus

Viele grüße
Uwe