Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1392to1396
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wartezeit OLAP / Dateien auslesen

Wartezeit OLAP / Dateien auslesen
25.11.2014 16:14:58
Roman
Hallo Miteinander,
vielleicht kann mir hier jemand weiterhelfen - habe schon den halben Tag rumprobiert und gesucht und keine Lösung gefunden. Komme irgendwie nicht weiter.
Mein Problem:
Ich habe ein Verzeichnis in dem liegen ca. 100 Dateien welche jede für sich per OLAP aus dem Cube ein paar Kennzahlen saugt.
Nun möchte ich diese Dateien per VBA öffnen, aktualisieren und dann die daraus aktualisierte Berechnung auslesen, speichern, in eine neue Datei schreiben und schließen.
Quasi 100 Dateien = 100 Zeilen in der neuen Datei. Soweit so gut, es funktioniert alles - nur die Aktualisierung nicht, der speicher- bzw. Auslesevorgang erfolgt während der Aktualisierung. Auch eine Pause mittels Application.Wait brachte keine Hilfe. Möglicherweise habt ihr eine brauchbare Idee. Bin kein VBA-Profi daher bitte ich Fehler zu entschuldigen.
Hier das Macro:
Option Explicit

Sub test()
Dim strDatnam As String
Dim wb As Workbook
Dim strPfad As String
Dim rngEinfüg As Range
strPfad = "P:\Dateien\"
strDatnam = Dir(strPfad & "*.xlsx")
'Application.ScreenUpdating = False
Do While strDatnam  ""
Set wb = Workbooks.Open(strPfad & strDatnam)
wb.RefreshAll
Application.Wait Now + TimeSerial(0, 0, 10)
With ThisWorkbook.Sheets(1)
Set rngEinfüg = IIf(IsEmpty(.Cells(1, 1)), .Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp).  _
_
Offset(1))
rngEinfüg = wb.Sheets(1).[B5]
rngEinfüg.Offset(, 1).Resize(, 12) = WorksheetFunction.Transpose(wb.Sheets(1).[B43:M43])
End With
wb.Close savechanges:=False
strDatnam = Dir
Loop
Set rngEinfüg = Nothing
Set wb = Nothing
'Application.ScreenUpdating = True
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wartezeit OLAP / Dateien auslesen
25.11.2014 17:58:11
Luschi
Hallo Roman,
seit Excel 2007 mache ich das so:

wb.RefreshAll
Application.CalculateUntilAsyncQueriesDone
'Wait for Refresh to finish before running vba
Application.CalculateUntilAsyncQueriesDone
If Not Application.CalculationState = xlDone Then
DoEvents
End If
'to go on
Gruß von Luschi
aus klein-Paris

AW: Wartezeit OLAP / Dateien auslesen
25.11.2014 20:14:02
Roman
Hallo Luschi,
danke für den Tip ich habe das wie folgt integriert. Aber dann geht gar nix mehr - Excel friert ein (Keine Rückmeldung).
Habe ich was falsch gemacht?
Option Explicit
Sub test()
Dim strDatnam As String
Dim wb As Workbook
Dim strPfad As String
Dim rngEinfüg As Range
'Pfadnamen anpassen
strPfad = "P:\Dateien\"
strDatnam = Dir(strPfad & "*.xlsx")
'Application.ScreenUpdating = False
Do While strDatnam  ""
Set wb = Workbooks.Open(strPfad & strDatnam)
wb.RefreshAll
Application.CalculateUntilAsyncQueriesDone
'Wait for Refresh to finish before running vba
If Not Application.CalculationState = xlDone Then
DoEvents
End If
'to go on
With ThisWorkbook.Sheets(1)
Set rngEinfüg = IIf(IsEmpty(.Cells(1, 1)), .Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp). _
Offset(1))
rngEinfüg = wb.Sheets(1).[B5]
rngEinfüg.Offset(, 1).Resize(, 12) = WorksheetFunction.Transpose(wb.Sheets(1).[B43:M43])
End With
wb.Close savechanges:=False
strDatnam = Dir
Loop
Set rngEinfüg = Nothing
Set wb = Nothing
'Application.ScreenUpdating = True
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige