Ich habe einen Würfel mit Pivots in Excel verbunden. In einer Zelle i zeigen den „letzten Aktualisierung“ Wert durch diese Formel:vba Get Cube Aktualisierungszeit mit Formel Benötigt, Makroausführung zu verzögern
=CUBEVALUE("CUBE NAME";"[Measures].[Last Data Update]")
Es dauert 5-10 Sekunden für Excel, um die Zeit der Aktualisierung aus dem Cube zu erhalten und die Zelle aktualisieren. Also, wenn ich die Arbeitsmappe direkt danach schließe, wird es einfach n/a sagen, wenn ich die Arbeitsmappe wieder öffne.
Ich habe dieses WB geplant, um (unter anderem wbs) durch ein anderes wb zu automatisieren, das geplant ist, jeden Tag zu laufen. Damit bekomme ich das N/A Problem. Ich sehe zwei Lösungen, von denen ich nicht weiß, wie ich dazu komme:
1, Halten Sie das Makro für 10 Sekunden, damit es das Datum richtig erhalten kann. - Ich habe sowohl Wait als auch Sleep Vba ausprobiert, aber dies unterbricht auch Berechnungen. - Gibt es eine Möglichkeit, das Ausführen des Makros nur zu unterbrechen?
2, Holen Sie sich das Update-Datum von VBA und dann drucken Sie es in eine Zelle. - Ich habe keine Ahnung, wie das geht. Ich habe gesucht, aber keine Alternative gefunden. - Weiß jemand, wie das möglich gemacht werden könnte?
Dank Elias
GELÖST:
Nur meine Lösung teilen möchten. Fand die CalculateUntilAsyncQueriesDone Methode, die OLAP-Datenquellen behandelt:
Application.CalculateUntilAsyncQueriesDone
Do While Application.CalculationState <> xlDone
DoEvents
Loop
Mehr Infos hier: https://msdn.microsoft.com/en-us/library/office/ff821008.aspx
Haben Sie versucht, das Hinzufügen 'DoEvents'? Oder sogar "Speichern" der Datei vor dem Schließen? Wenn die Berechnung auf automatisch gesetzt ist, berechnen die Zellen. –
Entschuldigung, dass ich nicht die ganze Geschichte gebe. Ja, ich habe sowohl DoEvents als auch Saving versucht. Ich habe auch versucht Calculate, aber es schließt immer noch zu schnell. Seit dem Cubevalue –
Sorry für die ganze Geschichte nicht geben. Ja, ich habe sowohl DoEvents als auch Saving versucht. Ich habe auch versucht Calculate, aber es schließt immer noch zu schnell. Es sieht so aus, als ob Cubevalue versucht, die Information wiederzuerlangen, nachdem sie berechnet hat. Egal wie lange Wartezeiten, Berechnungen oder Ereignisse ich CubeValue berechnen nicht richtig berechnet. Ich habe jedoch bemerkt, dass wenn ich einen manuellen Haltepunkt in den Code einfüge, er richtig berechnet. Also, wie kann ich das Makro für 10 Sekunden anhalten und habe in der Zwischenzeit die Excel-Funktion normal? –