Hallo zusammen,
ich habe folgendes Problem: Es gibt eine Excel-Tabelle, welche mit Hilfe von VBA zwei Dateien vergleicht. Dieses Makro wurde usrpünglich für Windows geschrieben, funktioniert jetzt aber nur unter Mac, nicht aber unter Windows.
Es erscheint immer die Fehlermeldung "Laufzeitfehler ´-2147221080 (800401a8)´: Die Methode ´ActiveSheet´ für das Objekt ´_Workbook´ ist fehlgeschlagen."
Das Makro öffnet die zwei Arbeitsmappen nacheinander mit folgendem Code:
Sub Vergleichen()
Dim Datei1 As String, Datei2 As String
Dim wb1 As Object, wb2 As Object
Dim lastrow As Long, i, j
Dim writerow As Long, erg As Boolean
Dim Spaltenzahl As String
Datei1 = Application.GetOpenFilename()
If Datei1 = "Falsch" Then Exit Sub
Datei2 = Application.GetOpenFilename()
If Datei2 = "Falsch" Then Exit Sub
Application.ScreenUpdating = False
Spaltenzahl = InputBox("Wie viele Spalten (vertikal) sollen verglichen werden? (Programm startet bei Spalte A.)")
Set wb1 = Workbooks.Open(Datei1)
Set wb2 = Workbooks.Open(Datei2)
Workbooks.Open FileName:=Datei1
ActiveSheet.Range("A1:M500").Select
Range("A1:M500").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
Selection.Replace " ", ""
Selection.Replace ".", ","
Workbooks.Open FileName:=Datei2
ActiveSheet.Range("A1:M500").Select
Range("A1:M500").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
Selection.Replace " ", ""
Selection.Replace ".", ","
For i = 1 To Spaltenzahl 'letzte zu überprüfende Zeile in Spalte 1-3 bestimmen
lastrow = WorksheetFunction.Max(wb1.ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row)
lastrow = WorksheetFunction.Max(wb2.ActiveSheet.Cells(Rows.Count, i).End(xlUp).Row)
Next i
Bei der dritten Zeile von unten erscheint dann immer die Fehlermeldung. Ich kann es mir nicht erklären, da es ja unter Mac einwandfrei funktioniert. Irgendwie setzt der Fehler ja erst ein, wenn die letzte Zeile gefunden werden soll. Alles davor funktioniert.
Hat da jemand eventuell einen Tipp für mich?
Vielen Dank!
Viele Grüße
Felix
|