Okay habe rumüberlegt, aber irgendwie gehts nicht.
Im Herbers war ja der komplette Lösungsvorschlag mit lErgebnisSpalte, damit konvertiert er aber alles ein-dimensional...
Das drehen / spielen mit den Argumenten funktioniert leider auch nicht, ich hab alles gedreht und getauscht. Kommen leider nur unbrauchbare sachen raus.
Also ganz neu drann, mit dem Gedanken, dass ich ja einfach immer nur die Range kopieren möchte. Die Ermittlung läuft, nun soll die Ergebnis-Spalte natürlich flexibel angepasst werden, damit sich die Daten nicht überschreiben. Im folgenden Beispiel sind alle Variablen mit Werten belegt, der Code funktioniert. VBA meldet aber Anwendungs oder Objektdefinierter Fehler.
[code]
Do While sDatei <> ""
'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen
'Datenübertragung alle genutzten Zeilen und Spalten
For z = 1 To oSourceBook.Sheets(1).UsedRange.Rows.Count
z1 = oSourceBook.Sheets(1).UsedRange.Rows.Count
s1 = oSourceBook.Sheets(1).UsedRange.Columns.Count
'Keine Leerzeilen verarbeiten
'Spalte 1 - Dateinamen
oTargetSheet.Cells(1, lErgebnisSpalte).Value = sDatei
If Trim(CStr(oSourceBook.Sheets(1).Cells(z, 1).Value)) <> "" Then
For s = 1 To oSourceBook.Sheets(1).UsedRange.Columns.Count
z1 = oSourceBook.Sheets(1).UsedRange.Rows.Count
s1 = oSourceBook.Sheets(1).UsedRange.Columns.Count
oSourceBook.Sheets(1).Range(Cells(1, 1), Cells(z1, s1)).Copy oTargetSheet.Range(Cells(1, lErgebnisSpalte), Cells(z1, s1))
'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes 1
'lErgebnisSpalte = lErgebnisSpalte + 1
'oTargetSheet.Cells(1, lErgebnisSpalte).Value = _
'oSourceBook.Sheets(1).Cells(z, s).Value
Next s
lErgebnisSpalte = lErgebnisSpalte + 1
End If
'lErgebnisSpalte = lErgebnisSpalte + 1
Next z[/code]
|