Hallo,
ich habe folgendes Makro erstellt, wo eine Excel Mappe mit GetObject geöffnet wird und ein Formeln (worksheetfunctions) laufen.
Sub ZusatzdatenTestfile()
'Fügt die folgenden Daten aus der neuesten GSPR-Tabelle ein: Lfd-Nr., Auftragsnummer, TID, MT Belegnummer (Nur Zugverkauf)
Dim Datei As String
Dim Zeile As Long
Dim ZeileMax As Long
ZeileMax = Tabelle2.UsedRange.Rows.Count
Datei = "C:\Testfiles\Tesfile1.xlsx"
GetObject (Datei)
With Tabelle2
For Zeile = 2 To ZeileMax
On Error Resume Next
If .Cells(Zeile, 9) = "" Then
.Cells(Zeile, 9) = Application.WorksheetFunction.Index(Workbooks(Datei).Worksheets(1).Range("A:A"), _
Application.WorksheetFunction.Match(Cells(Zeile, 1), Workbooks(Datei).Sheets(1).Range("C:C"), 0))
End If
If .Cells(Zeile, 10) = "" Then
.Cells(Zeile, 10) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _
Workbooks(Datei).Worksheets(1).Range("C:P"), 12, False)
End If
If .Cells(Zeile, 11) = "" Then
.Cells(Zeile, 11) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _
Workbooks(Datei).Worksheets(1).Range("C:P"), 11, False)
End If
If .Cells(Zeile, 4) = "00858357" Then
If .Cells(Zeile, 12) = "" Then
.Cells(Zeile, 12) = Application.WorksheetFunction.VLookup(.Cells(Zeile, 1), _
Workbooks(Datei).Worksheets(1).Range("C:P"), 13, False)
End If
End If
Next Zeile
End With
Workbooks(Datei).Close (False)
End Sub
Das Problem ist, manhcmal wird die erste Funktion (index und match) nicht berechnet, obwohl es passende Treffer gibt.
Ich habe den Eindruck, dass Excel schon mit der Berechnung anfängt, bevor noch die Datei geöffnet wurde. Manchmal öffnet sich die Datei schnell und die Berechnung findet statt. Ich habe das mehrmals mit den selben Dateien getestet.
Kann man das irgendwie fixen? Mit application.wait komme ich nicht weiter (bringt nichts).
Die Datei die mit GetObject geöffnet wird, ist nun 12 MB groß, es ist eine große Datenbank halt.
Kommischerweise, ist es immer die erste Berechnet die nicht statt findet. Die nächsten danach mit VLookUp funktionieren einwandfrei.
Mit Workbooks.Open ist dasselbe Problem und noch schlimmer, da findet NIE die Berechnung statt.
Danke für die Hilfe.
Lg