Brauche dringend Hilfe
16.02.2007 20:54:40
Sophie
weiß langsam nicht mehr weiter. Programm funktioniert teilweise, dann wieder nicht.
Kurz zum Programm. Öffne verschiedene Excel-Mappen und kopiere mir die Tabellenblätter heraus, wie folgt:
Option Explicit
'Daten_Auslesen wird von einer Userform aus aufgerufen und bekommt auch die Infos übergeben
Sub Daten_Auslesen(JahrAnfang As Integer, JahrEnde As Integer)
Dim Jahr As Integer
Dim Monat As Byte, Lauf As Byte
Dim strPfad As String
Dim strDateiname As String
Dim strDatKomplNamen As String
Dim j As Long, k As Long, i As Long
On Error Resume Next
strDatKomplNamen = ActiveWorkbook.FullName
strDateiname = ActiveWorkbook.Name
Jahr = Year(Date)
j = 1
For Jahr = JahrAnfang To JahrEnde
'wenn einzulesendes Jahr = aktuelles Jahr, dann einzulesende Monate auf aktuellen Monat einschränken
If Jahr = Year(Date) Then
Lauf = Month(Date)
Else
Lauf = 12
End If
strPfad = Left(strDatKomplNamen, InStr(1, strDatKomplNamen, "Jahr") + 3) & Jahr & Mid(strDatKomplNamen, InStr(1, strDatKomplNamen, "Jahr") + 8, InStr(1, strDatKomplNamen, strDateiname) - (InStr(1, strDatKomplNamen, "Jahr") + 8)) & strDateiname
Workbooks.Open Filename:= _
strPfad, ReadOnly:=True
For i = 1 To Lauf
'wenn im Tabellenblatt Eintragungen vorhanden dann...
If ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("J1") <> "" Then
'hier ist mein Problem...............................................
'auf ActiveWorkbook.Sheets("Ausw.-Monat " & i)....erfolgt keine Reaktion, kopiert ins Leere
'Doppelbereich einfassen, A1:IV5 immer gleich, der Rest variabel muß immer einzeln bestimmt werden
ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A1:IV5, A" & Range("A1").End(xlDown).Row & ":IV" & Range("A65536").End(xlUp).Row + 1).Copy
'absichern, daß die letzte Zeile keine verbundene Zeile ist, wenn ja dann Endbereich erweitern
If Err.Number = 1004 Then ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A1:IV5, A" & Range("A1").End(xlDown).Row & ":IV" & Range("A65536").End(xlUp).Row + 2).Copy
'hier werden die Daten eingefügt
Workbooks("Auswertesoftware.xls").Sheets("Tabelle1").Range("A" & j).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'nur Hilfsinfo, immer wenn ein neuer Block eingelesen wird
Workbooks("Auswertesoftware.xls").Sheets("Tabelle1").Range("A" & j) = "First"
'Einfügebereich hochzählen, damit nichts überschrieben wird
j = j + (ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A65536").End(xlUp).Row) - (ActiveWorkbook.Sheets("Ausw.-Monat " & i).Range("A1").End(xlDown).Row) + 7
End If
Next i
Application.CutCopyMode = False
'hier habe ich früher ActiveWindow.Close gehabt, dann kam es vor, daß mein Hauptprogramm "Auswertesoftware" geschlossen wurde
Windows(strDateiname).Close
Next Jahr
End Sub
Mit der Anweisung ActiveWorkbook.Sheets("Ausw.-Monat " & i) kommt es immer wieder vor, daß zwar die richtige Arbeitsmappe active ist, aber das Tabellenblatt nicht angewählt und auch kein Bereich eingefasst wird, und somit einfach beim Einfügen ein Leerer Bereich eingefügt wird.
Hoffentlich kann mir einer von Euch weiterhelfen, ist schon langsam zum Verzweifeln.
Hab es auch schon somal versucht anstatt ActiveWorkbook Workbooks(strDateiname).Sheets...funktionierte ebenfalls nicht.
Schönen Gruß
Sophie