AW: Felder prüfen
24.06.2014 16:05:01
aem
So, nachdem ich einfach auf die falsche Mappe geschaut habe, hier nochmal die ganze Lösung:
Sub Tabelle_generieren()
Dim Dateiname, Dateipfad, Tabellenende, Datensatz(50) As String, i, j, k, l, Länge_Datensatz, Lä _
nge_Datenabstand As Integer
Dateipfad = Hilfsfunktionen.Dateipfad_einlesen
Dateiname = Hilfsfunktionen.Dateiname_einlesen
Tabellenende = Workbooks("Prototyp_v1.xlsm").Sheets(2).UsedRange.SpecialCells( _
xlCellTypeLastCell).Row
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Tabelle auswählen und kopieren
Sheets(6).Select
Sheets(6).Copy
'Zielblatt entsprechend Verzeichnis und Dateiname speichern
ActiveWorkbook.SaveAs Filename:=Dateipfad & "\" & Dateiname & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
'Ziellisten Überschrift benennen
Sheets(1).Cells(1, 8) = Dateiname
'Zieltabellenzähler(l) auf Startpunkt setzen
l = 4
'Per Schleife Datensatz einlesen und in Zieltabelle schreiben
For i = 7 To Tabellenende
'Array und Zwischenzähler rücksetzen
For j = 1 To 50
Datensatz(j) = ""
Next j
Länge_Datenabstand = 0
'Datensatz in Array zwischenspeichern
Datensatz(1) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 1).Value
Datensatz(2) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 2).Value
Datensatz(3) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 3).Value
Datensatz(4) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 4).Value
Datensatz(5) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 5).Value
Datensatz(6) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 6).Value
Datensatz(7) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 7).Value
Datensatz(8) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(i, 8).Value
'als Hilfe Anzahl der leeren Zellen in Spalte A zwischen jedem Eintrag bestimmen
For k = i + 1 To Tabellenende
If Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(k, 1).Value = "" Then
Länge_Datenabstand = Länge_Datenabstand + 1
Länge_Datensatz = 8 + Länge_Datenabstand
Datensatz(Länge_Datensatz) = Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(k, 8).Value
End If
If Not Workbooks("Prototyp_v1.xlsm").Sheets(2).Cells(k, 1).Value = "" Then
Exit For
End If
Next k
'Von Array in Zieltabelle entsprechend Formatierung schreiben
ActiveWorkbook.Sheets(1).Cells(l, 10) = Datensatz(1)
ActiveWorkbook.Sheets(1).Cells(l, 3) = Datensatz(3)
ActiveWorkbook.Sheets(1).Cells(l, 12) = Datensatz(8)
ActiveWorkbook.Sheets(1).Cells(l, 6) = Datensatz(9)
ActiveWorkbook.Sheets(1).Cells(l, 8) = Datensatz(10)
ActiveWorkbook.Sheets(1).Cells(l, 9) = Datensatz(11)
ActiveWorkbook.Sheets(1).Cells(l, 4) = Datensatz(12)
ActiveWorkbook.Sheets(1).Cells(l, 5) = Datensatz(13)
'Zieltabellenzähler(l) und Ausgangstabellenzähler(i) hochzählen
l = l + 1
i = i + Länge_Datenabstand
Next i
'Zielblatt entsprechend Verzeichnis und Dateiname erneut speichern, dann alles schliessen
ActiveWorkbook.SaveAs Filename:=Dateipfad & "\" & Dateiname & ".xls", FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Sheets(1).Select
Sheets(2).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub