So, hier mal (fast) der komplette Code (Gas, EUA und Phelix, sind fast 1:1 zu Coael, der Rest ist enthalten). Die Änderungen sind schon berücksichtigt:
Public oAktuell, oAktuellPath, oPowerFutures, oGasFutures, oEmissionFutures, oCoalFutures, oWorkbookPath As String
Sub EEX_Futures_aktualisieren()
oAktuell = Range(„A7“)
oPowerFutures = Range(„A8“)
oGasFutures = Range(„A9“)
oEmissionFutures = Range(„A10“)
oCoalFutures = Range(„A11“)
oWorkbookPath = Range(„E4“)
oAktuellPath = Range(„E5“)
Dim oWorkbook As Workbook
Dim i As Long
Dim datLastUpdated As Date
Dim intLastUpdated As Integer
Dim strPeriode, strPeriodenjahr As String
Dim intPeriodenjahr As Integer
Dim intJahr As Integer
intJahr = Range(„B6“)
Set oWorkbook = Application.Workbooks.Open(oAktuellPath & „“ & oAktuell)
Sheets(„Tabelle1“).Select
datLastUpdated schreiben
i = 1271
While Range(„X“ & i) „“
i = i + 1
Wend
datLastUpdated = Range(„B“ & i)
intLastUpdated = i
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
’ Coal Futures:
Set oWorkbook = Application.Workbooks.Open(oWorkbookPath & „“ & oCoalFutures)
Call Coal(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 1)
Call Coal(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 2)
Call Coal(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 3)
oWorkbook.Close
’ Gas Futures:
Set oWorkbook = Application.Workbooks.Open(oWorkbookPath & „“ & oGasFutures)
Call Gas(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 1)
Call Gas(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 2)
Call Gas(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 3)
oWorkbook.Close
’ Emission Futures:
Set oWorkbook = Application.Workbooks.Open(oWorkbookPath & „“ & oEmissionFutures)
Call EUA(datLastUpdated, intLastUpdated, „Dec-“ & intJahr)
Call EUA(datLastUpdated, intLastUpdated, „Dec-“ & intJahr + 1)
oWorkbook.Close
’ Power Futures öffnen
Set oWorkbook = Application.Workbooks.Open(oWorkbookPath & „“ & oPowerFutures)
Call Phelix(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 1)
Call Phelix(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 2)
Call Phelix(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 3)
Call Phelix(datLastUpdated, intLastUpdated, „Jan-“ & intJahr + 4)
oWorkbook.Close
End Sub
’ —
Function Coal(datLastUpdated As Date, intLastUpdated As Integer, strPeriode As String)
’ COAL FUTURES:
Workbooks(oCoalFutures).Activate
Sheets(„FT2Y“).Select
Range(„A2“).Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Sort Key1:=Range(„A3“), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(„A2“).Select
Selection.AutoFilter
Call Auswahl_Periode(strPeriode)
’ Datum nach dem letzten Eintrag suchen:
i = 5
While Cells(i, 1) datLastUpdated
i = i + 1
Wend
Range(„K“ & i).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range(„B15“) = strPeriode
Range(„B16“) = strPeriodenjahr
Range(„B17“) = intPeriodenjahr
Workbooks(oAktuell).Activate
strPeriodenjahr = Right(strPeriode, 4)
intPeriodenjahr = CInt(strPeriodenjahr)
If intPeriodenjahr = 2009 Then
strSpalte = „CS“
ElseIf intPeriodenjahr = 2010 Then
strSpalte = „CT“
ElseIf intPeriodenjahr = 2011 Then
strSpalte = „CU“
End If
Sheets(„Tabelle1“).Range(strSpalte & intLastUpdated).Select
ActiveSheet.Paste
End Function
’ —
Sub Auswahl_Periode(strAuswahl As String)
’ Auswahl: Delivery Period = strAuswahl
Selection.AutoFilter Field:=3, Criteria1:=strAuswahl
End Sub
’ —
Nun nennt sich der Fehler: „Anwendungs- oder objektdefinierter Fehler“ und tritt an selber Stelle auf.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]