Microsoft Excel

Herbers Excel/VBA-Archiv

export per makro mit fester Breite

Betrifft: export per makro mit fester Breite von: Klaus
Geschrieben am: 16.10.2014 17:22:46

Hallo zusammen,

ich habe eine Tabelle, die aus 24 Spalten besteht, die mit fester Breite als Textdatei exportiert werden müssen, an die Daten liegt es nicht,
ea geht mal mit 10, mal mit 1000, aber jeweils sind es die gleichen Testdaten gewesen. Insgesamt können es so bis 6000 Zeilen sein.

Es kommt immer wieder mal ein Laufzeitfehler 13.

das makro seiht wie folgt aus

Sub textExport()
Const maxcol = 24
Dim cellLen(maxcol)
cellLen(1) = 3
cellLen(2) = 4
cellLen(3) = 3
cellLen(4) = 22
cellLen(5) = 10
cellLen(6) = 60
cellLen(7) = 5
cellLen(8) = 1
cellLen(9) = 1
cellLen(10) = 1
cellLen(11) = 1
cellLen(12) = 3
cellLen(13) = 5
cellLen(14) = 5
cellLen(15) = 60
cellLen(16) = 4
cellLen(17) = 3
cellLen(18) = 3
cellLen(19) = 10
cellLen(20) = 6
cellLen(21) = 2
cellLen(22) = 22
cellLen(23) = 64
cellLen(24) = 2
For i = 1 To Worksheets.Count
Open "x:\Anfrage_APM.txt" For Output As #1
For j = 1 To Worksheets(i).Cells.SpecialCells(xlLastCell).Row
For k = 1 To maxcol
sstr = Worksheets(i).Cells(j, k)
Select Case Len(sstr)
Case Is > cellLen(k)
Print #1, Mid(sstr, 1, cellLen(k));
Case Is < cellLen(k)
Print #1, sstr & _
String(cellLen(k) - Len(sstr), " ");
Case Else
Print #1, sstr;
End Select
Next
Print #1, ""
Next
Close
Next
End Sub

wäre nett wenn hier jemand eine Idee hat, wo es hakt.

Danke Klaus

  

Betrifft: AW: export per makro mit fester Breite von: Klaus
Geschrieben am: 16.10.2014 17:41:30

achso sorry

der Laufzeitfehler kommt immer in der Zeile

Select Case Len(sstr)


  

Betrifft: AW: export per makro mit fester Breite von: Daniel
Geschrieben am: 16.10.2014 17:47:27

HI
ich würde mal auf einen Fehler (#NV, #Wert #DIV/0, #Zahl) in der betroffenen Zelle tippen.
das erzeugt auf jeden Fall einen Fehler 13 in Verbindung mit der Funktion LEN.

aber das kannst du ja selber leicht prüfen, einfach mal schauen, in welcher Programmzeile der Fehler auftritt und und dann siehst du ja, welche Zelle grade bearbeitet wird (j = Zeilennummer, k = Spaltennummer) und kannst schauen, was da drin steht.

Was zu tun ist, hängt davon ab, was in diesem Fall passieren soll.
Der einfachste Weg, den Fehler zu vermeiden wäre folgende Codergänzung:
sstr = Worksheets(i).Cells(j, k).Text

durch das .Text wird auch bei Fehlern kein Fehlerwert in die Variable sstr geschrieben, sondern ein einfacher Textstring (genau der Text, den du in der Tabelle angezeigt bekommst) und das Programm läuft problemlos durch.
In der Textdatei steht dann an dieser Stelle der entsprechende Fehlertext.

Gruß Daniel


  

Betrifft: AW: export per makro mit fester Breite von: Klaus
Geschrieben am: 16.10.2014 23:26:31

Danke Daniel,

jetzt geht es problemlos, schon zigmal getestet, mit locker 5000 Zeilen

DANKE für die wahnsinnig schnelle kompetente Hilfe

Gruß Klaus


 

Beiträge aus den Excel-Beispielen zum Thema "export per makro mit fester Breite"