gleich vorneweg:
ich habe bereits in einem anderen Forum um Hilfe gebeten und mir wurde auch geholfen. Allerdings konnte ich diese Hilfe nicht umsetzen und habe auf die erneute Anfrage keine Rückmeldung bekommen.
Es geht um folgendes:
Ich habe bereits ein Makro gebastelt das folgendes macht:
1. Öffnen einer Datei
2. Alle Filter entfernen
3. Speichern unter einem anderen Namen und in einem anderen Verzeichnis
4. Danach wieder öffnen dieser Datei und dann die Werte aus dem ersten Reiter (Range A38:AI2000)
5. In die Datei einspielen , aus dem der Makro gestartet wird (Reiter Range A4)
Hier das Makro:
Sub Zwischenstand()
Workbooks.Open ("D:\Test\Test1.xlsx"), UpdateLinks:=0, Password:="test", WriteResPassword:=" _
test"
Worksheets("Tabelle1").Activate
ActiveSheet.UsedRange.AutoFilter
ActiveWorkbook.SaveAs ("D:\Test\Test2.xlsx")
ActiveWorkbook.Close savechanges:=False
Workbooks.Open ("D:\Test\Test2.xlsx"), UpdateLinks:=0, Password:="test", WriteResPassword:=" _
test"
Worksheets("Tabelle1").Activate
Range("A38:AI2000").Copy
Workbooks("Zwischenstand_2015.xlsm").Worksheets("Tabelle1").Range("A4").PasteSpecial Paste:= _
xlPasteAll
Application.CutCopyMode = False
ActiveWorkbook.Close (False)
End Sub
Funktioniert soweit auch alles, bloß jetzt habe ich noch ein Problem :
Ich muss auch noch 6 andere Tabellen aus 6 anderen Arbeitsmappen einspielen.
Am Ende sollen alle 7 Tabellen untereinander sein.
Problem ist, dass die Länge der Tabelle variieren kann. Theoretisch kann ich natürlich den bereits erstellten Makro 7 mal hintereinander laufen lassen , aber dann kann es ja sein , dass ich durch das reinkopieren Datensätze aus den anderen Tabellen weglösche.
Der Range A38:AI2000 kann beim nächsten mal auch nur bis A38:AI1500 gehen und danach wieder länger oder so.
Als Hilfe bekam dann ich folgende Info, die ich auch 1:1
Bereich dynamisch erstellen->
Letzte Zeile suchen mit:
Code:
loEnd = IIf(IsEmpty(.Cells(.Rows.Count, "A")), .Cells(.Rows.Count, 2).End(xlUp).Row, .Rows.Count)Dann Kopierbereich wie folgt definieren:
Code:
Range("A38:AI" & loEnd).CopyEinfügeposition wie folgt definieren:
Code:
Workbooks("Zwischenstand_2015.xlsm").Worksheets("Tabelle1").Range("A" & loEnd).PasteSpecial Paste:=xlPasteAll
Wenn man die 3 Zeilen so anpasst, kommt immer die Nachricht "Fehler beim kompilieren".
Könnt ihr mir vielleicht weiterhelfen? Ich bin leider mit den Variablen da noch nicht so vertraut und habe wirklich nur die Basiskenntnisse der Basiskenntnisse von VBA.
Vielen Dank im Voraus erstmal.
Gruß
Sascha