Hi,
Excel gibt immer ein zweidimensionales Variantarray zurück, es sei denn es wird nur ein einziger Zellwert abgefragt, bei einer Spalte/Zeile ist das Array aber trotzdem zweidimensional. Genauso kann Excel nur ein zweidimensionales Array auf einen Zellbereich anwenden, also muss auch das Target-Array zweidimensional sein.
Was Transpose angeht... wie schon gesagt: Die Funktion vertauscht die Dimensionen - aus einer Spalte wird eine Zeile. Das macht in dem gezeigten Codeauschnitt eigentlich absolut garkeinen Sinn.
"Ab 256 Zeichen pro Zeile"
Meinst du vielleicht Zellen, nicht Zeichen? Falls ja dann wäre das durchaus logisch, weil ja die Transpose Funktion benutzt wird. Sobald du dann mehr als 255 beschriebene Zeilen in deiner Spalte hast, kommt Excel zar wunderbar mit 255 Zeilen (oder auch 65536) klar, kann aber nur mit maximal 255 Spalten arbeiten (Excel 2002/2003).
Das dein Makro bei weniger als 255 Zeilen richtig funktioniert kann ich mir eigentlich nicht vorstellen.
Folgendes funktioniert auf jeden Fall:
Private Sub sdfsdfs()
Dim arrSource As Variant
Dim arrTarget As Variant
Dim loLastRow As Long
Dim iCnt1 As Integer, iCnt2 As Integer
With ThisWorkbook.Sheets(1)
arrSource = .Range(.Cells(1, 13), .Cells(Rows.Count, 13).End(xlUp)).Value
End With
loLastRow = UBound(arrSource)
ReDim arrTarget(loLastRow - 1, 0)
For iCnt1 = 1 To loLastRow
If Len(arrSource(iCnt1, 1)) > 0 Then
arrTarget(iCnt2, 0) = arrSource(iCnt1, 1)
iCnt2 = iCnt2 + 1
End If
Next
strMappenpfad = "C:\test.xls" 'platzhalter
Dim WB As Workbook
Set WB = Workbooks.Add
With WB
With .Sheets(1)
.Range(.Cells(1, 1), .Cells(iCnt2, 1)) = arrTarget
End With
.SaveAs Filename:= _
strMappenpfad, _
FileFormat:=xlTextPrinter, CreateBackup:=False
.Close (False)
End With
End Sub
Gruß
Till
|